Содрал текстурированный Куб из мануала OpenGLbyTylerDurden. Подправил под MASM32. Текстуру ReadFile в заранее выделенную память. Итог: Куб тормозит. У tylerdurden Куб крутится быстрее. Че делать?
push GL_DEPTH_TEST call glEnable push GL_LIGHT0 сall glEnable push GL_LIGHTING call glEnable push 1 push GL_TEXTURE_2D call glBindTexture push buffer push GL_UNSIGNED_BYTE push GL_RGB push 0 push 256 push 256 push 3 push 0 push GL_TEXTURE_2D call glTexImage2D push GL_LINEAR push GL_TEXTURE_MIN_FILTER push GL_TEXTURE_2D call glTexParameteri push GL_LINEAR push GL_TEXTURE_MAG_FILTER push GL_TEXTURE_2D call glTexParameteri push GL_TEXTURE_2D call glEnable push GL_NICEST push GL_PERSPECTIVE_CORRECTION_HINT call glHint push GL_PROJECTION call glMatrixMode push 40590000h push 0 push 3FB99999h push 9999999Ah push dword ptr ratio+4 push dword ptr ratio push 40568000h push 0 call gluPerspective push GL_MODELVIEW call glMatrixMode @draw: call GetTickCount cmp eax,msec jz @draw mov msec,eax push GL_COLOR_BUFFER_BIT+GL_DEPTH_BUFFER_BIT call glClear call glLoadIdentity push Z_koord push 0 push 0 call glTranslatef push 0 push 0 push 3F800000h push theta call glRotatef push 3F800000h push 3F800000h push 0 push theta call glRotatef push 3F800000h push 0 push 0 push theta call glRotatef push GL_QUADS call glBegin mov esi,offset Cube_1 call SP_CreateTextureQModel @glEnd: call glEnd push hDC call SwapBuffers SP_CreateTextureQModel proc push edi push eax @NextPoligon: mov edi,4 lodsd push eax lodsd push eax lodsd push eax call glNormal3f @LoadTexture: lodsd push eax lodsd push eax call glTexCoord2f @Load_Koord: lodsd push eax ;Z lodsd push eax ;Y lodsd push eax ;X call glVertex3f dec edi cmp edi,0 jnz @LoadTexture lodsd sub esi,4 cmp eax,0A0Dh jnz @NextPoligon pop eax pop edi ret SP_CreateTextureQModel endp
Что то в роде этого... Код (Text): fld theta fadd delta fstp theta push VK_NUMPAD8 call GetAsyncKeyState test eax,eax jz @Test_N2 fld Z_koord fadd dlinna fstp Z_koord @Test_N2: push VK_NUMPAD2 call GetAsyncKeyState test eax,eax jz @Test_Esc fld Z_koord fsub dlinna fstp Z_koord @Test_Esc: push VK_ESCAPE call GetAsyncKeyState test eax,eax jz @draw @Exit: push 0 call ExitProcess
@draw: call GetTickCount cmp eax,msec jz @draw mov msec,eax Это накуя? просто call GetTickCount mov msec,eax --- В остальном вроде бы все ничего. Скинь exe [edit] cmp eax,msec ; Тут случайно не с адресом сравнение происходит? :-D
Эту часть я НаФих выкинул! Результат нулевый. Оставь email, скину исходник. Будет над чем голову поломать. Проблема определенно в текстурировании. Причем при уменьшении разрешения текстуры результат тот же. Может есть какие то особенности при работе с glTexImage2D? push buffer ;Первый байт *.RAW файла push GL_UNSIGNED_BYTE push GL_RGB push 0 push 256 push 256 push 3 push 0 push GL_TEXTURE_2D call glTexImage2D
tylerdurden Давай поговорим по понятиям Синхронизация - это что-то с чем то. С чем синхронизируется рендер в твое примере? По-моему, ни с чем. Просто какое-то ожидание. Зачем нам ждать пока что-то там натикает? Чтобы разгрузить GPU? V-sync спасет от этого, а с таким подходом только лишняя нагрузка на CPU.
Все пацаны. Не надо так больше напрягаться! push pfd ;masm32 - offset pfd push eax push hDC call SetPixelFormat Все пошло. Но вот вопрос на 100$ Где надыбать мануал с описанием большенства функций OpenGLa. Хотелось бы с примерами...
skyproc MSDN - описание всех функций до OpenGL 1.2. Далее - все расширения описаны тут: http://oss.sgi.com/projects/ogl-sample/registry/ Гони 100$.
Держи карман шире! Спосибо за помощь... http://oss.sgi.com/projects/ogl-sample/registry/ - а что делать тем у кого с Englishом туговато! Какие есть проги для создания карт и моделей!!!
skyproc > а что делать тем у кого с Englishом туговато! Читать. Там все расширения расписаны по полочкам. > Какие есть проги для создания карт и моделей!!! Каких карт? Игральных, контурных, карт высот, карт нормалей, или карт лабиринтов? Для моделей - 3D Max. Но тебе придется либо написать экспорт-плагин, либо распарсить один из форматов. > Держи карман шире! Потерпим не час, потерпим не два. Ну, потерпим денечек. Потерпим-потерпим, ну а потом - Ну а потом включим счетчик. )