|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 11, 2004 21:04:04 Наверное, чего - то ещё не хватает (мозгов) :(
;the src areas marked with comments are generated by Windows Clipboard (TM) :)
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
include opengl32.inc
include gdi32.inc
includelib user32.lib
includelib kernel32.lib
includelib opengl32.lib
includelib gdi32.lib
CloseOGLWindow PROTO
;===============================
PFD_DRAW_TO_WINDOW equ 4
PFD_SUPPORT_OPENGL equ 20h
PFD_TYPE_RGBA equ 0
GL_COLOR_BUFFER_BIT equ 4000h
;===============================
.data
ClassName db "Class",0
AppName db "Window",0
style dd 0
lpfnWndProc dd WndProc
cbClsExtra dd 0
cbWndExtra dd 0
hInstance dd ?
hIcon dd ?
hCursor dd ?
hbrBackground dd COLOR_WINDOW
lpszMenuName dd 0
lpszClassName dd OFFSET ClassName
;=======================================================
pfd PIXELFORMATDESCRIPTOR { \
sizeof PIXELFORMATDESCRIPTOR,
1,
PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL,
PFD_TYPE_RGBA,
32,
0, 0, 0, 0, 0, 0,
0,
0,
0,
0, 0, 0, 0,
0,
0,
0,
0,
0,
0, 0, 0}
;=======================================================
msg MSG <>
hwnd HWND ?
hDC dd ?
hRC dd ?
PixelFormat dd ?
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
mov style, CS_HREDRAW or CS_VREDRAW
mov lpfnWndProc, OFFSET WndProc
mov hbrBackground, COLOR_WINDOW+1
mov lpszClassName, OFFSET ClassName
invoke LoadIcon, NULL, IDI_APPLICATION
mov hIcon, eax
invoke LoadCursor, NULL, IDC_ARROW
mov hCursor, eax
invoke RegisterClass, addr style
invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
CW_USEDEFAULT,320,240,NULL,NULL,\
hInstance,NULL
mov hwnd, eax
invoke GetDC, hwnd
mov hDC, eax
invoke ChoosePixelFormat, hDC, addr pfd
mov PixelFormat, eax
invoke SetPixelFormat, hDC,PixelFormat, addr pfd
invoke wglCreateContext, hDC
mov hRC, eax
invoke wglMakeCurrent, hDC, hRC
invoke ShowWindow, hwnd, SW_NORMAL
.WHILE TRUE
invoke GetMessage, ADDR msg, NULL, 0, 0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam
invoke ExitProcess, eax
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg==WM_DESTROY
invoke PostQuitMessage, NULL
.ELSEIF uMsg==WM_PAINT
invoke glClear, GL_COLOR_BUFFER_BIT
invoke glMatrixMode, GL_MODELVIEW_MATRIX
invoke glLoadIdentity
invoke glBegin,GL_POINTS
invoke glVertex3f,0.5f,0.5f,0.5f
invoke glEnd
; invoke glFlush
.else
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
ret
.endif
xor eax,eax
ret
WndProc endp
end start
|
|
|
Дата: Июл 11, 2004 23:11:54 А у меня ламерский вопрос. Разве неинициализированные данные не должны быть в разделе ".DATA?"? Или можно все смешивать? |
|
|
Дата: Июл 11, 2004 23:39:04 SeriousMan В строке invoke glVertex3f, 0.5f, 0.5f, 0.5f передавать в качестве параметров числа с плавающей запятой просто так не получиться. Если это все таки нужно, то необходим макрос который умеет помещать в стек такие числа и заново написанный прототип функции. Возьми другие инклуды (хотя вроде их сюда уже выкладывали) _1756827128__gl.zip |
|
|
Дата: Июл 11, 2004 23:52:26 2 sky: да, и даже нужно, когда данных мало. 2 keYMax: теперь возникла куча других ошибок... |
|
|
Дата: Июл 12, 2004 01:50:04 можно через переменную: sample dd 0.5 invoke glVertex3f, addr sample, addr sample, addr sample fasm рулез =) У него стандартный макрос может флоаты воспринимать. |
|
|
Дата: Июл 12, 2004 12:18:37 Спасибо, с этим разобрался. Теперь надо треугольничек нарисовать.... :) Туториалы - с сайта Neon Helium. |
|
|
Дата: Июл 12, 2004 15:56:57 Всем привет! Это опять я! :) FASM - ом я пользовался уже порядочно, но эту проблему я как ни пытался - решить не смог. Не принимает он значения с плавающей точкой (0.5f). Не верите - посмотрите на аттач. _1784635964__opengl_problem.zip |
|
|
Дата: Июл 12, 2004 16:53:26 SeriousMan fasm'у не нужен символ f после числа, он и так грамотный 8) А если тубе нужно double поместить в стек, то ищи на этом форуме макрос push_double. |
|
|
Дата: Июл 12, 2004 16:54:08 |
|
|
Дата: Июл 12, 2004 17:10:38 Может ему не понравился инклюд, который параметры в invoke считает, но переделав твой пример чуть-чуть откомпилил без проблем. _435372222__opengl_problem.rar |
|
|
Дата: Июл 14, 2004 19:37:50 Правка SeriousMan Туториалы - с сайта Neon Helium Да ну? Тогда мне интересно, как ты выкрутишься на 6-м и последующем уроках, если будешь писать на фасме. Я имею ввиду, если не использовать линкер. |
|
|
Дата: Июл 14, 2004 23:36:46 IceStudent Если не секрет, что в 6 уроке NeHe сложного? Я посмотрел и никаких проблем перенести его под FASM не вижу. |
|
|
Дата: Июл 15, 2004 01:06:26 IceStudent fasm - rulez. Вопросы могут возникнуть, только если не умеешь его использовать. |
|
|
Дата: Июл 15, 2004 11:14:20 Я имею ввиду, если не использовать линкер. А по мне так фасму и инклудов хватит. Я сейчас на пятом уроке. Интересно, только ли я пропускаю обработку ошибок при инициализации? |
|
|
Дата: Июл 15, 2004 11:47:15 Правка jekyll Намёк? keYMax Там используется либа GLaux - она статическая. Если не использовать format MS COFF, то как прикажете писать на фасме, не используя её функции? Да, можно написать свои. Но я говорю об уроке 6 и последующих. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.140 |