gpt4 book ai didi

c++ - 同时从 SDL 和 OpenGL 渲染

转载 作者:太空狗 更新时间:2023-10-29 21:07:45 25 4
gpt4 key购买 nike

大家好,我是 OpenGL 的新手(今天才开始认真地使用它进行编程),我正在尝试使用它来提升我的 SDL 游戏的 3D 效果。我在下面设置了一个小测试程序:

#include <SDL/SDL.h>
#include <gl/gl.h>

int main(int argc, char *argv[])
{
SDL_Event event;
float theta = 0.0f;

SDL_Init(SDL_INIT_VIDEO);
SDL_Surface *screen = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL | SDL_HWSURFACE | SDL_RESIZABLE | SDL_FULLSCREEN);

glViewport(0, 0, 800, 600);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glMatrixMode(GL_PROJECTION);
glMatrixMode(GL_MODELVIEW);

int done;

for(done = 0; !done;)
{

SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 255, 0, 0));

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();
glTranslatef(0.0f,0.0f,0.0f);
glRotatef(theta, 0.0f, 0.0f, 1.0f);
glBegin(GL_TRIANGLES);
glColor3f(0.83f, 0.83f, 0.0f);
glVertex2f(0.0f, 1.0f);
glColor3f(0.83f, 0.83f, 0.0f);
glVertex2f(0.87f, -0.5f);
glColor3f(0.83f, 0.83f, 0.0f);
glVertex2f(-0.87f, -0.5f);
glEnd();

theta += 10.0f;
SDL_Flip(screen);
SDL_GL_SwapBuffers();
SDL_PollEvent(&event);
if(event.key.keysym.sym == SDLK_ESCAPE)
done = 1;
}
}

我的问题是我尝试渲染的红色背景从未渲染过,只渲染了 OpenGL 三角形。

提前感谢任何可以帮助我的人。非常感谢。

最佳答案

关于 OpenGL 有一个简单的规则:它不能与其他人很好地协同工作。你的情况是,双缓冲区交换(由 SDL_GL_SwapBuffers 启动)将以某种方式替换窗口中的所有内容,而不是由 OpenGL 渲染。

只需使用 OpenGL 绘制所有内容即可。

关于c++ - 同时从 SDL 和 OpenGL 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4480021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com