gpt4 book ai didi

c++ - 使用 OpenGL (freeglut) 的 SDL 在调用 glutBitmapCharacter 时崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:00 26 4
gpt4 key购买 nike

我有一个在 SDL 下通过 freeglut 使用 OpenGL 的程序。 SDL/OpenGL初始化如下:

// Initialize SDL
SDL_Init(SDL_INIT_VIDEO);

// Create the SDL window
SDL_SetVideoMode(SCREEN_W, SCREEN_H, SCREEN_DEPTH, SDL_OPENGL);

// Initialize OpenGL
glClearColor(BG_COLOR_R, BG_COLOR_G, BG_COLOR_B, 1.f);
glViewport(0, 0, SCREEN_W, SCREEN_H);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, SCREEN_W, SCREEN_H, 0.0f, -1.0f, 1.0f);

glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

我一直在使用 glBegin() ... glEnd() block 毫无问题地绘制图元。但是,在这个程序中,当我调用任何 glutBitmapX 函数时,程序只是简单地退出而没有错误状态。我用来绘制文本的代码是:

glColor3f(1.f, 1.f, 1.f);
glRasterPos2f(x, y);
glutStrokeString(GLUT_BITMAP_8_BY_13, (const unsigned char*)"test string");

在以前的类似程序中,我使用了 glutBitmapCharacter 和 glutStrokeString 来绘制文本并且它似乎可以工作。唯一的区别是我现在将 freeglut 与 SDL 一起使用,而不是像我在以前的程序中那样只使用 GLUT。我的设置是否存在一些我没有发现的基本问题,或者是否有更好的绘制文本的方法?

最佳答案

Section 2, Initialization :

Routines beginning with the glutInit- prefix are used to initialize GLUT state. The primary initialization routine is glutInit that should only be called exactly once in a GLUT program. No non- glutInit- prefixed GLUT or OpenGL routines should be called before glutInit.

The other glutInit- routines may be called before glutInit. The reason is these routines can be used to set default window initialization state that might be modified by the command processing done in glutInit. For example, glutInitWindowSize(400, 400) can be called before glutInit to indicate 400 by 400 is the program's default window size. Setting the initial window size or position before glutInit allows the GLUT program user to specify the initial size or position using command line arguments.

不要尝试混搭 GLUT 和 SDL。它将以眼泪和/或无法运行的事件循环结束。选择一个框架并坚持使用。

关于c++ - 使用 OpenGL (freeglut) 的 SDL 在调用 glutBitmapCharacter 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12629832/

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