PMG

Форумы по созданию игр
Текущее время: 28 мар 2024 17:09

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: glRasterPos И 16 битный цвет
СообщениеДобавлено: 06 сен 2005 20:08 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Инициализирую так:
Код:
    PIXELFORMATDESCRIPTOR pfd = {
   sizeof(PIXELFORMATDESCRIPTOR),   /* size */
   1,            /* version */
   PFD_SUPPORT_OPENGL |
   PFD_DRAW_TO_WINDOW |
   PFD_DOUBLEBUFFER,      /* support double-buffering */
   PFD_TYPE_RGBA,         /* color type */
   16,            /* prefered color depth */
   0, 0, 0, 0, 0, 0,      /* color bits (ignored) */
   0,            /* no alpha buffer */
   0,            /* alpha bits (ignored) */
   0,            /* no accumulation buffer */
   0, 0, 0, 0,         /* accum bits (ignored) */
   16,            /* depth buffer */
   0,            /* no stencil buffer */
   0,            /* no auxiliary buffers */
   PFD_MAIN_PLANE,         /* main layer */
   0,            /* reserved */
   0, 0, 0,         /* no layer, visible, damage masks */
    };

.............................

static HRESULT InitGL(void)
{
        glViewport(0, 0, 1024, 768);
   hDC = GetDC(hWnd);
   setupPixelFormat(hDC);
        hGLRC = wglCreateContext(hDC);
   wglMakeCurrent(hDC, hGLRC);
        glLoadIdentity();     // Сброс просмотра оси x,y=0
        return true;
};

Фунция рендеринга состоит только из:
Код:
glLoadIdentity();  //Установка координат в начало
glOrtho(0.0, (GLfloat) 1024, 0.0,(GLfloat) 768,-1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glRasterPos2i(0,0);

SwapBuffers(hDC);


Устанавливаю при помощи ChangeDisplaySettings(&DM, 0);
32х битный цвет, все работает.
У станавливаю 16бит цвет сразу же после запуска под C++Builder и выпадает с Invalid floating point operation

Чего делать? вообще непонимаю, в 16бит цвете все работает кроме команды glRasterPos. В 32бит все работает.
Пробовал glRasterPos3 и задовал другие координаты, непомогате.

Может я инициализирую нетак? может кодом кто поделится =)

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


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

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Отвечаю сам на свой вопрос... Но это нерешение вопроса, а лиш обноружение того в чем корень ЗЛА!
Решение проблемы нашлось неожиданно!
Сделав поиск фалов, я нашел 2 версии opengl32.dll
4ая версия этой библиотеки посатавлялась с инсталятаром opengl, была установлена в WIN98SE
И 5ая версия была обнаружена в WINXP (она там была сразу).
Скопировал ее на место 4ой, и все заработало!!!

Теперь glRasterPos работает и в 16битном и 32битном режиме!!!

Теперь перестала работать функция включения-отключения вертикальной синхронизации.
Раньше ее приходилось выключать. (была включена поумолчанию)
После замены, она всегда выключена!!!
И включить её используя эту функцию:
Код:
void set_gl_vsync(byte enabled) // 1=true -- VSync включен, 0=false -- выключен
{
    PFNWGLSWAPINTERVALEXTPROC wglSwapInterval;

    wglSwapInterval = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT");
    if ( wglSwapInterval ) wglSwapInterval(enabled);
}

Я почемуто немогу =)))

Либо одно либо другое=))))
Еще opengl.dll у меня версии 1.1.1.0 от SILICON 1997
Может дело еще в ней?

Дайте прямые линки где можно закачать последнию версию opengl.dll
а Opengl32.dll поставляется вместе с драйвером.
В случае если заменит на 5ую версию (где все работает) то glGetString(GL_RENDERER); выдает:
Generic/MMX
А с 4ой версией постовляемой вместе с драйвером (но где проблемы с glRastrPos в 16битном цвете)
Выдыает GeForce FX 5200/AGP/SSE/3DNOW!

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Последний раз редактировалось DDMZ 07 сен 2005 11:40, всего редактировалось 1 раз.

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

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Вооще-то opengl.dll и opengl32.dll - это файлы которые не используют твоего железа. Обычно вместе с дровами на видеокарту должны поставляеться и dllки для OGL, но как они называются я не в курсе. Посмотри glview (http://www.realtech-vr.com/glview/index.html) что он у тебя говорит?

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


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

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
У меня например для ATI выдает файл atioglxx.dll.

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


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

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Вообщем как я понял нужно искать те дрова к моей видео карте где нет такого глюка...
а сам глюк зарыт в драйвере opengl который идет вместе с моей видео картой...
а opengl32.dll это связующее звено с nvopengl.dll .

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 сен 2005 12:45 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Проблема Оказывется кроется даже не в драйвере!!!
А в компиляторе!!!
Берем например урок 4 НЕХЕ
Добавим в drawscine функцию glRasterPos
Компилируем его на VC++ 6, в полноэкранном режиме и 16 бит колор...
Программа работает!!!
Компилируем его на C++BUILDER 6, в полноэкранном режиме и 16 бит колор...
Программа НЕРАБОТАЕТ!!!

Вот так новость!!!
Нашел в 13м уроке упоминание о glRasterPos
Скачал с сайта NEHE lesson13_bcb6.zip запускаю его тоже не работает если запускать fullscreen (16bit).
Помоему ответ уже близко!!! и прячется гдето в Lib файлах...

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Последний раз редактировалось DDMZ 10 сен 2005 21:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 сен 2005 20:57 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Немогу понять в чем дело...
Исользовал разные opengl.lib и opengl32.lib, перекомпилировал даже из Visual C++! (на VC 100% должна была работать, я ведь там запускал).

Берем урок 13 запускаем exe который скомпилирован уже на билдере автаром... неаботает! компилируем у меня, НЕРАБОТАЕТ!
Если запускать под отладчиком выдает Invalid floating point operation, а если запустить просто exe то выпадает ошибка:
Код:
Программа PROJECT1 вызвала ошибку 10H в модуле NVOPENGL.DLL по адресу 0197:695f8a24.
Регистры:
EAX=00000000 CS=0197 EIP=695f8a24 EFLGS=00010256
EBX=00469540 SS=019f ESP=0064fd3c EBP=00469540
ECX=00000010 DS=019f ESI=004b5210 FS=478f
EDX=ffff0000 ES=019f EDI=00000000 GS=36d6
Байты по адресу CS:EIP:
dd d8 d9 6c 24 08 59 c3 cc cc cc cc 53 8b 5c 24
Содержимое стека:
00001f72 695f8a5c 3f801372 00001372 00477090 00477094 00000000 695dcb0c 00469540 004b5210 695ab5d4 0046de38 00469540 0064fdd8 00000000 00477060

Код:
Программа PROJECT1 вызвала ошибку c0000026H в модуле KERNEL32.DLL по адресу 0197:bffc04d4.
Регистры:
EAX=00000000 CS=0197 EIP=bffc04d4 EFLGS=00000202
EBX=00000000 SS=019f ESP=0064fb40 EBP=0064fb50
ECX=0064fb8c DS=019f ESI=0064fa7c FS=474f
EDX=0064fc44 ES=019f EDI=81d1a400 GS=0000
Байты по адресу CS:EIP:
5d 5f 5e 5b 8b e5 5d c3 8b 4c 24 04 f7 41 04 06
Содержимое стека:
0064fb50 bff79138 00000000 0064ff68 0064fb74 bffc0613 0064ff68 0064fb74 0064fc44 81d1a400 0064ff68 0064fc44 0064fc60 0064fb98 bff76849 0064fc44


В XP тоже похожую ошибку выдает....
=( Все... я незнаю чего делать!


Самое интересное!!!
Пробовал менять драйвера! непомогает...
Запустил у друга на компе у него GF 440 у него все работает!!!

У него оно работает у меня нет...
Итог: дело в моем компе!!!

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 сен 2005 11:27 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Регистры мало помогут ;(. Надо запускать из отладчика и смотреть где ошибка. Потом возьми 13 урок с сайта NeHe (exe-шник) - это будет работать? А так явно, что у тебя проблемы с дровами... Возможно надо и операционку переставить.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 сен 2005 15:03 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Вот что я делал:
Скачал 13ый урок написаный на VC и на BCB6 и запускал в режиме FULLSCREEN
- http://nehe.gamedev.net/data/lessons/bc ... 3_bcb6.zip
- http://nehe.gamedev.net/data/lessons/vc/lesson13.zip

Запускаю у друга (GFMX440) У него все! работает.
Запускаю у себя (FX5200):
Win98SE и WINXP, Менял драйвера видеокарты , ставил старые, ставил новые...
Результат один:
Запускаю урок на VC РАБОТАЕТ!, а урок написаный на BCB вылетает...

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 сен 2005 12:39 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Так вопрос! Вылетает урок в BCB компилированый из lesson13_bcb6.zip, или уже тобой? Если из lesson13_bcb6.zip, то значит есть какие-то dll от BCB лежащие в недрах Win, которые не работают корректно - выход переставить/или убрать BCB. Если вылетает урок скомпилированный тобой, то значит либы в BCB опять же битые - надо переставить BCB.

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


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

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Я ничего сам некомпилировал (если сам буду компилировать то результат тот-же). а в WIN XP я неустанавливал BCB... он чистый.
Я написал в rusfaq там у одного тоже проблема с этим оказалась.

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 сен 2005 09:26 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Но это все равно проблема BCB, скорее какая-та DLL с ошибкой. Увы, конечно, я это не знаю ... Работаю только с VC++.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 сен 2005 10:12 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Итак... что я хочу посоветовать =)
НЕ ПРОГРАМИРУЙТЕ на CBUILDER 6 используя OPENGL даже если прогармма 100% работает у вас, у вашего соседа она может 100% неработать либо работать неправильно. Я столько косяков наловил! ПРИМЕР: даже самая простая команда glDeleteTextures Работает в корне неправильно.

После переноса программы на VC все косяки и глюки исчезли! (и больше непоявлялись =))

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2005 15:09 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Н-да, теперь я понял, почему я не работаю на Builder :P

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


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

Зарегистрирован: 26 янв 2006 20:32
Сообщения: 44
Откуда: Москва
DDMZ писал(а):
Итак... что я хочу посоветовать =)
НЕ ПРОГРАМИРУЙТЕ на CBUILDER 6 используя OPENGL даже если прогармма 100% работает у вас, у вашего соседа она может 100% неработать либо работать неправильно. Я столько косяков наловил! ПРИМЕР: даже самая простая команда glDeleteTextures Работает в корне неправильно.

После переноса программы на VC все косяки и глюки исчезли! (и больше непоявлялись =))


Во-первых, мало ли чего у соседа поустановлено, как впрочем, и у тебя.

Во-вторых: glDeleteTextures используется в некоторых уроках NeHe. Что значит - работает в корне неправильно? В каком уроке?

В третьих - интересная ссылка (компонент OpenGLPanel для CBuilder 4-6 и BDS 2006)+ порт уроков NeHe+демки+VCL!
http://www.allanpetersen.com/opengl.htm

Хотя изучать OpenGL все-таки лучше на VC.

С уважением, Виктор.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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