【问题标题】:OpenGL white blank screen and not respondingOpenGL白色空白屏幕并且没有响应
【发布时间】:2014-01-05 03:17:02
【问题描述】:

我正在使用 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;

【问题讨论】:

  • 您对此进行了多长时间的调试?你进入你的主循环了吗?你进入你的绘图循环了吗?

标签: c++ opengl sdl


【解决方案1】:

您忘记处理所有事件,因此 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...
}

维基

【讨论】:

  • 大声笑...非常感谢。那成功了。我知道我错过了一些如此愚蠢的东西!再次谢谢你!事情现在只是一个空白。应该有一个三角形,但我没有看到它。而且背景应该用黑色清除,这也不会发生。
  • 不客气,这可能与顶点和矩阵有关!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多