![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему этот код вызывает ошибку [Delphi, OpenGL]
Yanis © (2006-01-30 13:18:00)Ошибка возникает на строчке
glutCreateWindow('Test');
Вот код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Glut, OpenGL;
procedure Display; cdecl;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity;
glutWireTeapot(0.5);
glutSwapBuffers;
end;
procedure Reshape(w, h: Integer); cdecl;
begin
glViewport(0, 0, w, h);
end;
procedure Keyboard(key: Byte; x, y: Integer); cdecl;
begin
if key = 27 then
Halt;
end;
var
cmd: array[0..31] of PChar;
i, count: Integer;
begin
for i := 0 to ParamCount do
cmd[i] := PChar(ParamStr(i));
count := ParamCount + 1;
glutInit(@count, @cmd);
glutInitDisplayMode(GLUT_RGB or GLUT_DOUBLE or GLUT_DEPTH);
glutInitWindowPosition(50, 50);
glutInitWindowSize(512, 512);
glutCreateWindow('Test');
glEnable(GL_DEPTH_TEST);
glutDisplayFunc(Display);
glutReshapeFunc(Reshape);
glutKeyboardFunc(Keyboard);
glutMainLoop;
end.
Yanis (2006-01-30 15:38:00) [1]Всем спасибо. При помощи XProger'а я разобрался с проблемой. Просто модуль Glut.pasкриво написан и там просто небыла реализована загрузка этой процедуры и её адрес всегда был nil. Кому интересно его можно скачать отсуда
http://www.mit.jyu.fi/vesal/kurssit/winohj/htyot/h02/ajkolio/delphi/glunits/GLUT.pas
XProger (2006-01-30 14:57:00) [2]Ладно, поставлю вопрос по-другому... Чему равен адрес процедуры @glutInitWindowPosition до её вызова?
Cash (2006-01-30 14:52:00) [3]Yanis © (30.01.06 14:30) [9]:
Sorry men! Be calm and... be not warry, somewho konw this trouble!
Patient!...
Yanis (2006-01-30 14:51:00) [4]2 [11]
Модуль Glutс сайта delphi3d.net Там загрузка происходит при инициализации модуля. т.е. динамическая.
XProger (2006-01-30 14:46:00) [5]Yanis, линковка процедуры glutInitWindowPosition - динамическая? Линкуешь перед вызовом?
Yanis (2006-01-30 14:42:00) [6]Если кто то возмётся помогать, то могу выслать все файлы проекта включая модули в uses.
Yanis (2006-01-30 14:30:00) [7]Послушайте. За кого вы меня принимаете? Меня это обижет:
> А ты знаешь что это значит?
:)
Я бы не полез в форуме, если бы всё не перепробовал, что в моих силах. Мне кажется что где то, какая то функция не загружена. Ошибка:
> Exception EAccessViolation in module Project1.exe at 00000000.
> Access violation at address 00000000. Read of address 00000000.
>
Cash (2006-01-30 14:10:00) [8]Yanis © (30.01.06 14:05) [7]:
Дак вот: нешути с консолью! :)))
Убери эту директиву и попробуй еще раз.
Yanis (2006-01-30 14:05:00) [9]Господи, что вы пристали к {$APPTYPE CONSOLE}? Просто у меня был пример, в нём выводилиськ оординаты прямов консоль. Хотел передалть этот пример с использованием glut. Дело то не в консольном приложении.
Cash (2006-01-30 14:00:00) [10]Да, ведь Soulghai ничего другого не выделял.
Yanis (2006-01-30 13:46:00) [11]
> А ты знаешь что это значит?
Что?
{$APPTYPE CONSOLE} что значит?
Cash (2006-01-30 13:43:00) [12]Yanis © (30.01.06 13:40) [3]:
А ты знаешь что это значит?
Yanis (2006-01-30 13:40:00) [13]2 Soulghai
Да вообще то это мне не нужно. Но это и не мешает. Скорее даже помогает при отладке.
Soulghai (2006-01-30 13:34:00) [14]{$APPTYPE CONSOLE} - нахрена тебе?
Yanis (2006-01-30 13:31:00) [15]Только что выяснилось, что ошика возникает ещё раньше. Вот на этой строчке:
glutInitWindowPosition(50, 50);