我开始了sdl和opengl课程。我有一个问题,当我尝试更改背景时,此功能不会给出任何结果。我使用MSVS和Win8.1。 我正在尝试使用带参数的各种选项。我总是有黑色背景。我有什么想法可以做错吗?
#include <SDL.h>
#include <SDL_opengles2.h>
#include <GLES3/gl3.h>
#include <cstdio>
#include <cstdlib>
const unsigned int DISP_WIDTH = 800;
const unsigned int DISP_HEIGHT = 600;
int SDL_main(int argc, char *args[]) {
// ##### FIXME! #####
SDL_Window *window = NULL;
SDL_GLContext context = NULL;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_Log("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
return 10;
}
atexit(SDL_Quit);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,SDL_GL_CONTEXT_PROFILE_ES);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION,3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION,0);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
window = SDL_CreateWindow("Tut", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, DISP_WIDTH, DISP_HEIGHT, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
if (!window) {
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error","Couldn't create the main window",NULL);
return EXIT_FAILURE;
}
context = SDL_GL_CreateContext(window);
if (!context) {
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error", "Couldn't create an OpenGl context", NULL);
return EXIT_FAILURE;
}
glClearColor(0.5F, 0.0F, 1.0F, 0.5F); // this function changes the color
glClear(GL_COLOR_BUFFER_BIT);
SDL_GL_SwapWindow(window);
bool quit = false;
while (!quit) {
SDL_Event event;
if (SDL_WaitEvent(&event) != 0) {
if (event.type == SDL_QUIT) {
quit = true;
}
}
}
return EXIT_SUCCESS;
}
答案 0 :(得分:0)
您不会在循环中的任何位置交换缓冲区。在完成所有相关调用后,您必须交换缓冲区,否则显示将不会更新。