PMG

Форумы по созданию игр
Текущее время: 23 апр 2024 20:40

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: помогите новичку
СообщениеДобавлено: 09 фев 2007 17:53 
Не в сети
Новичок

Зарегистрирован: 09 фев 2007 17:38
Сообщения: 6
вот решил занятся OpenGL на Builder C++ 5.0
скачал много уроков книжек но так у меня и не получилось ничего делаю все как надо но в резудьтате компиляции получаю обычное окно

помогите кто может скиньте мне на мыло исходник
такого типа:
программа делает полноэкранный режим и оставьте место где писать операторы рисования...

void Draw()
{

вот так


}

все спасибо всем заранее :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 фев 2007 13:34 
Не в сети
Любитель

Зарегистрирован: 15 янв 2007 18:48
Сообщения: 39
Так а в чём собственно проблема. Может лучше свой код выложишь, и уже в нём разобраться проще будет. Просто из фразы
Цитата:
в резудьтате компиляции получаю обычное окно

не вовсем понятно что ты должен был получить ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 фев 2007 10:15 
Не в сети
Новичок

Зарегистрирован: 09 фев 2007 17:38
Сообщения: 6
//---------------------------------------------------------------------------

#include <vcl.h>
#include <windows.h> // Заголовочный файл для Windows
#include <gl\gl.h> // Заголовочный файл для OpenGL32 библиотеки
#include <gl\glu.h> // Заголовочный файл для GLu32 библиотеки
#include <gl\glaux.h>
#pragma hdrstop

#include "GameGLmodule.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Draw();
}
//---------------------------------------------------------------------------
BOOL bSetupPixelFormat(HDC hdc)
{
PIXELFORMATDESCRIPTOR pfd, *ppfd;
int pixelformat;
ppfd = &pfd;
ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
ppfd->nVersion = 1;
ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
ppfd->dwLayerMask = PFD_MAIN_PLANE;
ppfd->iPixelType = PFD_TYPE_RGBA;
ppfd->cColorBits = 16;
ppfd->cDepthBits = 16;
ppfd->cAccumBits = 0;
ppfd->cStencilBits = 0;
if ((pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0)
{
MessageBox(NULL, "ChoosePixelFormat failed", "Error",
MB_OK);
return FALSE;
}
if (SetPixelFormat(hdc, pixelformat, ppfd) == FALSE)
{
MessageBox(NULL, "SetPixelFormat failed", "Error",
MB_OK);
return FALSE;
}
return TRUE;
}

void __fastcall TForm1::FormResize(TObject *Sender)
{
glViewport( 0, 0, Width, Height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho(-5,5, -5,5, 2,12);
gluLookAt(0,0,5, 0,0,0, 0,1,0);
glMatrixMode( GL_MODELVIEW );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(ghRC)
{
wglMakeCurrent(ghDC,0);
wglDeleteContext(ghRC);
}
if(ghDC)
ReleaseDC(Handle, ghDC);
}
//---------------------------------------------------------------------------


void TForm1::Draw()
{
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
GLUquadricObj *quadObj;
quadObj=gluNewQuadric();
gluQuadricDrawStyle(quadObj, GLU_FILL);
glColor3f(1,0,0);
gluSphere(quadObj, 2,10,10);
glRotatef(3, 0,1,0);
gluDeleteQuadric(quadObj);
SwapBuffers(ghDC);
return;
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{




ghDC = GetDC(Handle);
if (!bSetupPixelFormat(ghDC))
Close();
ghRC = wglCreateContext(ghDC);
wglMakeCurrent(ghDC, ghRC);

glClearColor(0.0, 0.0, 0.0, 0.0);
FormResize(Sender);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
float p[4]={3,3,3,1},
d[3]={-1,-1,-3};
glLightfv(GL_LIGHT0,GL_POSITION,p);
glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,d);


}
//---------------------------------------------------------------------------




вот исходник в h файле переменные добавлены, я хз почему не работает помогите плз...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 фев 2007 18:25 
Не в сети
Любитель

Зарегистрирован: 15 янв 2007 18:48
Сообщения: 39
Сразу как глянул на код, так возник вопрос. Интересно, а как же у тебя это компилировалось? В инициализации окна:
Код:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) )

ты объявляешь функцию Draw, но определяешь её как МЕТОД КЛАССА TForm1:
Код:
void TForm1::Draw()

=)
Затем, исправив это, откомпилировал. В результате получил окно (такое же как и у тебя, видимо) не отображающее никаких quadObj-ов.
Через дебагер не разобрался в чём дело. Тупо повставлял MessageBox-ы (вот LOL :D ) в начале и в конце каждой из функций (Draw & FormCreate). В итоге появлялись сообщения:
1) Draw
2) End of Draw
3) Create
4) End of Create
...
Ну я думаю понятно, да?
ЗЫ: Не привязывайся к Bilder-им геморойным RAD-средтвам, почитай первый урок NeHe? К тому же, если ты новичёк, узнаешь азы работы форточек с графикой.
ЗЗЫ: Сам не смог до конца разобраться с ихними (Bilder-кими) фичами, перешёл на VC. И тебе советую (IMHO!).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 фев 2007 17:29 
Не в сети
Любитель

Зарегистрирован: 15 янв 2007 18:48
Сообщения: 39
Ага, ты видимо брал этот урок с
http://opengl.gamedev.ru/articles/?id=114&page=1,
так вот у тебя беда не в коде (не в функции Draw в частности).
Определяешь ты её всё-таки правильное:
Код:
void TForm1::Draw()
.
Проблема в том, что ты её не оттуда вызываешь(2), и видимо не там
объявляешь (1).
1) При создании проекта автоматически создаётся хедер Unit.h. В нём, в разделе
Код:
private:
объявляешь как переменные (ghDC & ghRC), так и эту злосчастную функцию ( void Draw(); ).
2) А вызывать надо не в
Код:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) )
,
а, допустим, при поступлении в очередь сообщения WM_PAINT(событие OnPaint в Builder-е).
По краёней мере у меня всё получилось, и тебе удачи!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 фев 2007 14:56 
Не в сети
Новичок

Зарегистрирован: 09 фев 2007 17:38
Сообщения: 6
спасибо всем ща буду пробовать делать! и еще раз спасибо что не послали меня куда подальше ))) читать уроки НеНе)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 фев 2007 17:56 
Не в сети
Любитель

Зарегистрирован: 15 янв 2007 18:48
Сообщения: 39
Цитата:
спасибо всем

А ты внимательно посмотри кто ВСЕ тебе отвечали :D .
А вообще - пожалуйста


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2007 14:56 
Не в сети
Новичок

Зарегистрирован: 04 дек 2006 10:06
Сообщения: 8
вместо зделать=сделать :x опечаточка вышла

_________________
с уважением Ayla!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2007 14:58 
Не в сети
Новичок

Зарегистрирован: 04 дек 2006 10:06
Сообщения: 8
здравствуйе!
подскажите пожалуйста,
как можно зделать на OpenGL таблицу самую простую?
и почему у одной проги на разных компах разная скорость вращения? и как зтого можно избежать.

_________________
с уважением Ayla!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2007 15:05 
Не в сети
Новичок

Зарегистрирован: 04 дек 2006 10:06
Сообщения: 8
вот еще вопрос, для новичков какая среда для программирования более подходящая: МФСи или ВинАпи?

_________________
с уважением Ayla!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 мар 2007 10:07 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Что ты подразумеваешь под таблицей?

Чтобы избежать разной скорости вращения, надо синхронизировать вращение со временем. Посмотри Урок 21. Линии, сглаживание, синхронизация, ортографическая проекция и звуки.

Та среда подходящая к какой больше привык или в которой тебе будет наиболее удобно. Если без разницы, то мне кажется MFC, но сам я делаю все на winapi и уроки NeHe тоже на winapi.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 мар 2007 11:37 
Не в сети
Новичок

Зарегистрирован: 04 дек 2006 10:06
Сообщения: 8
это самая простая таблица, в которой можно было бы отобразить какие либо данные, например: на экране рисуется картинка, а где-нибудь рядом (сбоку) появляется табличка показывающая характеристику этой картинку(табличка должна быть прозрачной). Я так думаю что бы не париться нужно просто используя шрифты (ну например из 13 урока) и glBegin(LINES);...glEnd(); да?

И еще вопросик: я не могу понять почему когда я вызываю из консольного проложения диалоговые окна, они у меня не появляются, а стоит мне убрать из него элементы управления (кроме кнопок ok и cancel)как оно при вызове появляется :-(

_________________
с уважением Ayla!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 мар 2007 17:14 
Не в сети
Любитель

Зарегистрирован: 15 янв 2007 18:48
Сообщения: 39
Цитата:
это самая простая таблица, в которой можно было бы отобразить какие либо данные, например: на экране рисуется картинка, а где-нибудь рядом (сбоку) появляется табличка показывающая характеристику этой картинку(табличка должна быть прозрачной)

Если тебе подойдёт, то сделай обычный квадрат с элементом прозрачности (я точно не знаю, но кажется это альфа-параметр).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 мар 2007 13:57 
Не в сети
Новичок

Зарегистрирован: 04 дек 2006 10:06
Сообщения: 8
Спасибо DjonNik, попробую что-нибудь сделать.

Да, до меня дошло почему у меня не вызывались дилог. окна (блин из-за такой ерунды столько времени ушло)! Очень радует когда самому можно найти свои же ошибки. :D

_________________
с уважением Ayla!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 апр 2007 15:10 
Не в сети
Новичок

Зарегистрирован: 04 дек 2006 10:06
Сообщения: 8
А где можно взять RedBook и Эйнджела бесплатно? (имею ввиду интернет ссылки)

_________________
с уважением Ayla!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB