0


我正在尝试为我的 2D opengl 游戏编写粒子系统。因此,几何实例化与保存每个粒子数据的 TBO 一起似乎很好。
问题是,在初始化时,函数

glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, buffer);

因分段错误而崩溃。TBO 的初始化函数:

glGenBuffers(1, &buffer);
glBindBuffer(GL_TEXTURE_BUFFER, buffer);
glBufferData(GL_TEXTURE_BUFFER, MAX_PARTICLES_N * 4 * sizeof(float), NULL,
           GL_DYNAMIC_DRAW);
glGenTextures(1, &transforms);
glBindTexture(GL_TEXTURE_BUFFER, transforms);
glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, buffer);

OpenGL 上下文很好,因为其他一切正常。还支持 OpenGL-3.0(TBO 需要)。我正在使用 Radeon 卡在 Ubuntu 13.04 上运行它。驱动程序是英特尔® Sandybridge Mobile。 解决方案:

我的主要错误是我期望 OpenGL 中编译的所有内容都应该能够正常工作。事实上,我使用的 OpenGL 版本是 3.0,而

glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, buffer);

需要 3.1 或更高版本。

glewIsSupported("GL_ARB_texture_buffer_object")

返回 false,让它工作的唯一方法是设置

glewExperimental = GL_TRUE;

在 glwinit() 之前;

4

0 回答 0