OpenGL окно не открывается - PullRequest
1 голос
/ 02 декабря 2011

У меня есть код из OpenGLBook (openglbook.com), который компилируется, но не загружается. Я понятия не имею, почему он не загружается. Код выглядит следующим образом:

main.cpp

#include "main.h"

/// Methods
/// -----------------------------

int main(int argc, char* argv[])
{
    Initialize(argc, argv);

    glutMainLoop();

    exit(EXIT_SUCCESS);
}

main.h

#ifndef main_h
#define main_h

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <GL/glew.h>
#include <GL/freeglut.h>

#define WINDOW_TITLE_PREFIX "CHAPTER 1"

void Initialize(int, char*[]);
void InitWindow(int, char*[]);
void ResizeFunction(int, int);
void RenderFunction(void);

#endif

functions.cpp

<code>#include "main.h"

int CurrentWidth = 800,
    CurrentHeight = 600,
    WindowHandle = 0;

void Initialize(int argc, char* argv[])
{
    InitWindow(argc, argv);

    fprintf(
        stdout,
        "INFO: OpenGL Version: %s\n",
        glGetString(GL_VERSION)
        );

    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}

void InitWindow(int argc, char* argv[])
{
    glutInit(&argc, argv);

    glutInitContextVersion(4, 2);
    glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
    glutInitContextProfile(GLUT_CORE_PROFILE);
glutSetOption ( GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS ); glutInitWindowSize (CurrentWidth, CurrentHeight); glutInitDisplayMode (GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); WindowHandle = glutCreateWindow (WINDOW_TITLE_PREFIX); if (WindowHandle

Когда я компилирую и пытаюсь запустить мой .exe с Visual Studio 2010, ничего не происходит вообще. Окно OpenGL даже не открывается. Visual Studio работает так, как будто работает что-то около 2 секунд, а затем возвращается в нормальное состояние.

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011
glutInitContextVersion(4, 2);

Ваш текущий графический драйвер на самом деле поддерживает OpenGL 4.2? Если нет, то создание вашего окна не удастся. 4.2 все еще довольно новый; вместо этого попробуйте 4.1.

1 голос
/ 02 декабря 2011

Попробуйте отладку! Поместите точку останова в вашу основную функцию и проходите по ней до тех пор, пока программа не завершит работу.

Как упоминал Никол Болас, у вас может не быть видеокарты, поддерживающей OpenGL 4.2. Перейдите на сайт AMD или nVidia и выясните, поддерживает ли ваша видеокарта OpenGL 4.2. Если нет, измените следующую строку на версию, поддерживаемую вашей картой.

glutInitContextVersion(4, 2);
...