LINUX.ORG.RU

openGL: почему-то не работает ничего, кроме последней функции


0

1

Пытаюсь запустить пример из книги:

#include <GL/glu.h>
#include <GL/glut.h>
void RenderScene()
{
        glClear(GL_COLOR_BUFFER_BIT);
        glColor3f(1.0f,0.5f,0.5f);
        glRectf(-5.0f,5.0f,-5.0f,5.0f);
        glFlush();
}
void SetupRC()
{
        glClearColor(0.0f,0.0f,1.0f,1.0f);
}
void ChangeSize(int w,int h)
{
        GLfloat ar;
        if(h==0) h=1;
        glViewport(0,0,w,h);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        ar = (GLfloat)w / (GLfloat)h;
        if(w<=h)
                glOrtho(-100.0,100.0,-100.0/ar,100.0/ar,1.0,-1.0);
        else
                glOrtho(-100.0*ar,100.0*ar,-100.0,100.0,1.0,-1.0);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
}
void main(int argc, char *argv[])
{

        glutInit(&argc,argv);
        glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
        glutCreateWindow("GL!");
        glutDisplayFunc(RenderScene);
        glutReshapeFunc(ChangeSize);
        SetupRC();
        glutMainLoop();
}

В результате всё заливается синим цветом, квадрат не рисуется. Если не вызывать SetupRC(), всё заливается черным цветом, т.е. glClear, похоже, всё равно не вызывается. С чем такое связано?

★★★★

Последнее исправление: wingear (всего исправлений: 1)

man glRectf. Вместо glRectf(-5.0f,5.0f,-5.0f,5.0f); надо писать glRectf(-5.0f,-5.0f,5.0f,5.0f);

А так у вас получается невидимая точка.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А, просто там было с тем же порядком плюсов и минусов, но 25. Видимо, опечатки специально сделаны, чтобы думали при копировании - тоже самое еще в одной книге было

wingear ★★★★
() автор топика

>Тем более что тут какой-то ад - это сраное immediate mode с fixed function.

Может он не крузис пишет, зачем ему шойдерами обмазываться?

cnupm
()
Ответ на: комментарий от cnupm

А что, шейдеры это обязательно крузис?

С современными видеокартами без шейдеров даже треугольник не отрисуешь. Как и без вертексбуфферов, например. Архитектура такая, и надо это понимать.

А OpenGL пониманию этого не способствует, своей эмуляцией FFP, immediate mode, и кучей функций с малопонятными названиями.

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

эх.а я думал, после постижения всего этого наследия 90х будет уже и про щейдеры, которые без того не будут понятны. Вроде как они в 3 и 4 версиях все переписали, правда, учебников по 4 нет. Или так и держатся за обратную совместимость?

wingear ★★★★
() автор топика
Ответ на: комментарий от wingear

Держатся, а куда им деваться.

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

Так я и говорю, качай DirectX SDK - по D3D полно документации и учебников. А потом, как разберешься, можешь и на OGL попробовать писать, если приспичит.

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

куча функций с малопонятными названиями.

Это вы про D3D видимо. Да, согласен, там венгры сильно перестарались.

Kosyak ★★★★
()
Ответ на: комментарий от anonymous

Так я и говорю, качай DirectX SDK

На линуксе, или, хотя бы на макоси запустишь мне D3D?

//Я уж промолчу про iOSы, Android'ы, WP, миги и плейстейшены

Kosyak ★★★★
()
Ответ на: комментарий от Kosyak

>WP
На WP7 будет сервелат и XNA.

плейстейшены

Подменяем понятия, хехе? Какой нахер на плейстейшне OGL? Там свое api. Есть OGL ES, да, но это еще большее говно, чем стандартный GOL, и им почти никто не пользуется.

На всем остальном реалтайм 3D не нужно. Как по причине того, что железо его в нормальном виде не тянет, так и по причине того, что оно никому там не нужно.

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

Там во всем api, не считая D3DX и «Effects», всего штук 20, примерно, функций. Причем, имена понятные и четкие - например D3D10CreateDeviceAndSwapChain или D3D10CompileShader.

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

На всем остальном реалтайм 3D не нужно. Как по причине того, что железо его в нормальном виде не тянет, так и по причине того, что оно никому там не нужно.

ты делаешь меня смеяться, анонимус

и, кстати, там как раз OpenGL ES, в массе своей 2.0, а стало быть - программируемый конвейер и унификация отрисовки

jtootf ★★★★★
()
Ответ на: комментарий от anonymous

Итак, ОС всех времён и народов является Винда? И ныне, и присно, и вовеки веков? Я правильно вас понимаю?

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

Ну почему вовеки веков.
Но на сегодняшний день это реально самая продвинутая ОС(из живых). И самая популярная, по удачному совпадению.

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

Под виндой я тут понимаю Vista/7, естественно, или их серверные вариации.

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

>На линуксе, или, хотя бы на макоси запустишь мне D3D?

Оно там не надо, только клинический долбоскрёб или blizzard(они с оговорками) будут клепть игрушки под макось. Под линакс - вообще никто не будет, за единичным исключением(пенумбра,рыгнот и прочее унылое ушлепище).

//Я уж промолчу про iOSы, Android'ы, WP, миги и плейстейшены

Под иось с ведройдом тебе просто так никто писать не даст, ровно как и под вендофон7 - все только за деньги, под плейстейшены тебе вообще никто и никогда писать не даст, даже за $$$.

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

Как бы я это выше говорил, не? Это какой-то упоротый анонимус начал выступать что ogl говнуэ и вообще топикстартер использует ffp. С другой стороны, тут братюни по соседству рисовали какую-то херню с томографа(?) на ogl и жоско были завязаны на шойдерах (из-за производительности).

cnupm
()
Ответ на: комментарий от wingear

«учебников по 4 нет» - фо-ту! Учебники по 4.0 есть. 5-ое издание SuperBible.

Sergey_MSU
()
Ответ на: комментарий от cnupm

только клинический долбоскрёб

Да, Valve, Epic Games и id Software с вами согласны

Kosyak ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.