Ниже пример программы nasm + opengl. После компиляции падает. Вопрос - почему? Если запускать в gdb , затем команда run окошко и цветной треугольник прорисовывается, т.е. до какойто степени оно работает.
help me please
; ----------------------------------------------------------------------------
; triangle.asm
;
; A very simple *Windows* OpenGL application using the GLUT library. It
; draws a nicely colored triangle in a top-level application window. One
; interesting thing is that the Windows GL and GLUT functions do NOT use the
; C calling convention; instead they use the "stdcall" convention which is
; like C except that the callee pops the parameters.
; ----------------------------------------------------------------------------
global main
extern glClear
extern glBegin
extern glEnd
extern glColor3f
extern glVertex3f
extern glFlush
extern glutInit
extern glutInitDisplayMode
extern glutInitWindowPosition
extern glutInitWindowSize
extern glutCreateWindow
extern glutDisplayFunc
extern glutKeyboardFunc
extern glutPostRedisplay
extern glutReshapeFunc
extern glutMainLoop
section .text
title: db 'A Simple Triangle', 0
zero: dd 0.0
one: dd 1.0
half: dd 0.5
neghalf:dd -0.5
display:
push dword 16384
call glClear ; glClear(GL_COLOR_BUFFER_BIT)
push dword 9
call glBegin ; glBegin(GL_POLYGON)
push dword 0
push dword 0
push dword [one]
call glColor3f ; glColor3f(1, 0, 0)
push dword 0
push dword [neghalf]
push dword [neghalf]
call glVertex3f ; glVertex(-.5, -.5, 0)
push dword 0
push dword [one]
push dword 0
call glColor3f ; glColor3f(0, 1, 0)
push dword 0
push dword [neghalf]
push dword [half]
call glVertex3f ; glVertex(.5, -.5, 0)
push dword [one]
push dword 0
push dword 0
call glColor3f ; glColor3f(0, 0, 1)
push dword 0
push dword [half]
push dword 0
call glVertex3f ; glVertex(0, .5, 0)
call glEnd ; glEnd()
call glFlush ; glFlush()
ret
keyboard:
pop ebx;
pop ebx;
pop ebx;
call glutPostRedisplay
ret
reshape:
pop ebx;
pop ebx;
ret
main:
push dword [esp+8] ; push argv
lea eax, [esp+8] ; get addr of argc (offset changed :-)
push eax
call glutInit ; glutInit(&argc, argv)
push dword 0
call glutInitDisplayMode
push dword 80
push dword 80
call glutInitWindowPosition
push dword 300
push dword 400
call glutInitWindowSize
push title
call glutCreateWindow
push display
call glutDisplayFunc
call glutMainLoop
ret


Ответ на:
комментарий
от Darkman

Ответ на:
комментарий
от nikolayd
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от Darkman


Ответ на:
комментарий
от svr4

Ответ на:
комментарий
от nikolayd
Ответ на:
комментарий
от Darkman
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от svr4
Ответ на:
комментарий
от generatorglukoff

Ответ на:
комментарий
от svr4
Ответ на:
комментарий
от svr4

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от svr4

Ответ на:
комментарий
от Darkman
Ответ на:
комментарий
от Darkman

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Неопределённая ссылка на «glClear» (2020)
- Форум OpenGL: освещение (2005)
- Форум Hello world на opengl сегфолтится:( (2011)
- Форум как сделать библиотеку с glut (2013)
- Форум openGL: почему-то не работает ничего, кроме последней функции (2011)
- Форум [OpenGL] Туплю :/ (2008)
- Форум Программа для OpenGL под mingw32 (2007)
- Форум OpenGL. Ошибка проверки глубины. (2013)
- Форум OpenGL (2008)
- Форум Тормоизт текстурированный куб в OpenGL. (2003)