OpenGL白色空白屏幕没有响应

时间:2014-01-05 03:17:03

标签: c++ opengl sdl

我正在使用SDL2.00和OpenGL来创建程序。该程序目前不应该做任何事情,它只是一个试验台。但是我遇到了一个问题。当我使用SDL_CreateWindow创建窗口时,窗口进入忙碌状态并停止响应。程序流程并未受此影响,但窗口本身不起作用。它所做的只是显示一个白色的空白窗口并接受无输入,无法调整大小无法移动且无法退出。我将附上代码,但我怀疑它是代码相关的,因为我已经使用SDL制作了一些程序,它们似乎工作正常。

使用VS2013 SDL2.00 OpenGL

=========主======

#include "stdafx.h"


void init()
{
    glClearColor(0.0, 0.0, 0.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 640.0 / 480.0, 1.0, 500.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

}

void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(0.0, 2.0, -5.0);
glVertex3f(-2.0, -2.0, -5.0);
glVertex3f(2.0, -2.0, -5.0);
glEnd();

}


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


SDL_Init(SDL_INIT_VIDEO); 
SDL_Window * window;
window = SDL_CreateWindow("OpenGLTest", 300, 300, 640, 480, SDL_WINDOW_SHOWN |       SDL_WINDOW_OPENGL);
init();


while (true){
    display();
    SDL_GL_SwapWindow(window);
}




return 0;

}

====== stdafx ==

#pragma once

#include <iostream>
#include <SDL.h>
#include <Windows.h>
#include <gl/GL.h>
#include <gl/GLU.h>

#define PI 3.14159265

using namespace std;

1 个答案:

答案 0 :(得分:3)

您忘记处理所有事件,因此SDL窗口只是在等待和等待,从而“没有响应” - 只需添加它就可以解决问题!

while (true) {
    SDL_PumpEvents();

    display();
    SDL_GL_SwapWindow(window);
}

您也可以通过调用SDL_PollEvent(SDL_Event *event)

的循环手动拉出所有事件
SDL_Event event;

while (SDL_PollEvent(&event)) {
    // Process the event...
}

维基