· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Ламерский баг в ламерском сырце... :(

. 1 . 2 . >>

Посл.отвђт Сообщен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

SeriousMan
Да? Может я другие макросы юзал... Почитай-ка это, и примеры качни.


Дата: Июл 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 и последующих.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.140