2010-05-26 7 views
0

Я использую GLFW в качестве графического интерфейса для проектов OpenGL. Я использую свою красную книгу и код тестирования, и первый бит кода не работает вообще. Я хочу сказать, что это проблема GLFW, потому что у меня нет этой проблемы в JOGL.OpenGL Не рисовать

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

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

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

    while(running) 
    { 
     //GL Code here 
     glClear(GL_COLOR_BUFFER_BIT); 
     glClearColor(0.0, 0.0, 0.0, 0.0); 

     glColor3f(1.0, 1.0, 1.0); 
     glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); 
     glBegin(GL_POLYGON); 
      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(); 


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

    glfwTerminate(); 

    return 0; 
} 
+0

Это, как представляется, проблема glOrtho. – 2010-05-26 05:51:07

ответ

1

Добавление glLoadIdentity(); фиксированный код:

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

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 
     glLoadIdentity(); 

     glClearColor(0.0, 0.0, 0.0, 0.0); 
     glClearDepth(1.0); 
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

     glColor3f(1.0, 1.0, 1.0); 
     glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); 
     glBegin(GL_POLYGON); 
      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(); 


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

    glfwTerminate(); 

    return 0; 
} 
+0

Не стесняйтесь принимать свой собственный ответ! –

0

вы должны указать Wich матрицу вы хотите, чтобы glOrtho превратить

..... 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
...... 
+0

Бесплатный совет: прежде чем отвечать на вопрос, проверьте дату, когда он был задан. – SigTerm