OpenGL ничего не будет отображаться - PullRequest
0 голосов
/ 26 мая 2010

Почему я не могу получить что-либо для отображения с этим кодом?

#include <iostream>
#include "GL/glfw.h"
#ifndef MAIN
#define MAIN
#include "GL/gl.h"
#include "GL/glu.h"
#endif
using namespace std;

void display();

int main()
{
    int running = GL_TRUE;
    glfwInit();

    if( !glfwOpenWindow( 640,480, 0,0,0,0,0,0, GLFW_WINDOW ) )
    {
        glfwTerminate();
        return 0;
    }

    while( running )
    {
        //GL Code here
        display();

        glfwSwapBuffers();
        // Check if ESC key was pressed or window was closed
        running = !glfwGetKey( GLFW_KEY_ESC ) &&
        glfwGetWindowParam( GLFW_OPENED );
    }

    glfwTerminate();

    return 0;
}

void display()
{
    glClearColor(0,0,0,0);
    glClear(GL_COLOR_BUFFER_BIT);
    glViewport(0,0,640,480);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    //glTranslatef(0, 0, -2);
    glBegin(GL_POLYGON);
        glColor3f(1.0, 0.2, 0.2);
        glVertex3f(0.25, 0.25, 0.0);
        glVertex3f(0.75, 0.25, 0.0);
        glVertex3f(0.75, 0.75, 0.0);
        glVertex3f(0.25, 0.75, 0.0);
    glEnd();
    glFlush();
}

Ответы [ 2 ]

2 голосов
/ 27 мая 2010

Я думаю, проблема в том, что когда вы не указываете систему координат например,

void glOrtho(GLdouble   left,
             GLdouble   right,
             GLdouble   bottom,
             GLdouble   top,
             GLdouble   nearVal,
             GLdouble   farVal);

или

void glFrustum(GLdouble  left,
               GLdouble  right,
               GLdouble  bottom,
               GLdouble  top,
               GLdouble  nearVal,
               GLdouble  farVal);

система координат по умолчанию:

-1, 1, -1, 1, -1, 1

, поэтому glTranslate перемещает объект за пределы системы координат, а openGL обрезает объект.

Если вы измените вызов glTranslate () для перевода на 1.0, объект будет виден.

0 голосов
/ 26 мая 2010

Вы не установили область просмотра с glViewport или матрицу проекции. Если вы измените чистый цвет на что-то кроме черного, вы получите этот цвет в своем окне?

Попробуйте изменить код на:

void display()
{
    glClearColor(0,0,0,0);
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-1, 1, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    //glTranslatef(0, 0, -2);
    glBegin(GL_POLYGON);
        glColor3f(1.0, 0.2, 0.2);
        glVertex3f(0.25, 0.25, 0.0);
        glVertex3f(0.75, 0.25, 0.0);
        glVertex3f(0.75, 0.75, 0.0);
        glVertex3f(0.25, 0.75, 0.0);
    glEnd();
    glFlush();
}

(Видовое окно могло быть правильно настроено при создании окна OpenGL, в противном случае инициализируйте его с шириной и высотой окна)

Также отключите выборку задней поверхности, если полигон имеет неправильную намотку, glDisable(GL_CULLFACE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...