Проблема с приложением OpenGL
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Проблема с приложением OpenGL - 2011-01-04 00:27:10.050000
|
|
|
autom
Сообщений: 4
Оценки: 0
Присоединился: 2009-11-05 15:26:17.813333
|
Написал программу, легкую, для вывода прямых Она работает, но после нажатия на крестик у окна, она закрывается, а в процессах остается и жрет 18 мб. Меня бесит, приходится каждый раз ее через таскмененджер закрывать. Вот код:
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
void display(){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glColor3f(0.0, 0.0, 0.0); //Цвет для 1 линии
glVertex2f(0.25, 0.25);
glVertex2f(0.75, 0.75);
glColor3f(1.0, 0.0, 0.0); //Цвет для 2 линии
glVertex2f(0.75, 0.25);
glVertex2f(0.25, 0.75);
glEnd();
glFlush();
}
int main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpenGL test");
glClearColor(1.0, 1.0, 1.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-04 10:07:49.676666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Видимо, не сам писал ;)
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-04 23:57:07.546666
|
|
|
autom
Сообщений: 4
Оценки: 0
Присоединился: 2009-11-05 15:26:17.813333
|
Сам, не сам)) Так вы знаете, в чем дело? Компилил через Code::Blocks. PS У вас на forum.antichat.ru заходит?
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-05 00:54:50.543333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: _SaZ_ Видимо, не сам писал ;) Да без разницы. Что-то я припоминаю похожее. Но не уверен, что испытал это именно с glut и не знаю как с этим бороться. В glut все коллбеки необязательны, так что это сильно похоже на глюк (баг?). Но я бы попробовал перерыть API glut, на предмет функций вида glut*Func. А вдруг там можно установить коллбек на закрытие окна. Или на что-нибудь, что включает в себя закрытие окна. И вот из этого коллбека, я бы попробовал glutExitMainLoop (или как там это называется?). А если бы это не сработало, то тупо использовал бы exit(0).
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-05 01:04:13.253333
|
|
|
autom
Сообщений: 4
Оценки: 0
Присоединился: 2009-11-05 15:26:17.813333
|
Хорошо, спасибо. Наверно глюк, потому, что программы без glut, выходят спокойно!
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-06 13:04:12.326666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Просто нажатие "крестика" в консоли не есть нормальное завершение работы программы и цикл сообщений спокойно продолжает себе крутиться. Соответственно, нужно либо корректно делать работу с консолью, либо компилировать приложение как оконное (опции компилирования: subsystem = windows, а не console).
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-07 12:18:00.023333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Я не думаю что речь идёт о "крестике в консоли". Скорее всего используется крестик окошка с opengl-выводом.
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-07 13:14:22.663333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Всех тонкостей не знаю, но, имхо, у оконного приложения (по крайней мере в MSVS) прототип точки входа по-умолчанию это WinMain, а не main.
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-07 14:13:03.703333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: _SaZ_ Всех тонкостей не знаю, но, имхо, у оконного приложения (по крайней мере в MSVS) прототип точки входа по-умолчанию это WinMain, а не main. Насколько я знаю, это особенность MSVC. Всякие там CodeBlocks, думающие о кроссплатформенности, используют main.
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-07 14:28:37.890000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Тогда, возможно, изначально пример писался под MSVS, у которого есть одна хитрая особенность - дёргать ExitProcess в функции main вместо return-а. А с нормальными компиляторами этот трюк не прокатывает.
|
|
|
RE: Проблема с приложением OpenGL - 2011-01-07 16:19:39.706666
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Если ты заглянешь в примеры идущие в комплекте с glut, там всё организовано именно так, никаких слов про win-main там нет. Я думаю, что всё дело в том, что main-loop glut "забывает" правильно среагировать на WM_QUIT или что-то типа того. Он не завершается и программа навечно зависает в glutMainLoop. Может это связано с версией вендовс – скажем на семёрке приходят какие-то несколько другие сообщения, и glutMainLoop не получает того "завершительного" эвента, которое он ждёт для завершения цикла. Гадать об этом можно долго, но узнать точно можно лишь одним способом: влезть в сорцы glut, найти там main-loop, и выяснить при каких условиях этот main-loop завершается. А дальше используя знание win32api дедуктивным путём выяснить в чём дело. Или можно просто заняться отладкой glut. И я говорю, что-то подобное я наблюдал, и возможно именно с глут. Сейчас проверить не удаётся, ибо X-сервер у меня без ускорения: никак мне не добраться и не выяснить, с чего это вдруг nvidia-drivers поссорились с последними версиями ядра. Но есть и другой способ: можно просто научить glut приложение реагировать на кнопку esc, и оттуда вызывать glutQuit/glutExitMainLoop/glutKillYouself или что-то в этом роде, предназначенное для завершения glutMainLoop.
|
|
|
|
|