【发布时间】:2020-12-09 17:58:42
【问题描述】:
我使用 OpenGL 和 SDL2 来渲染脊椎动画。在特定的 z 顺序中,这些动画像白色块一样排列。所有纹理都变白。我猜这个错误是在 OpenGL 绘制代码中。
glPushMatrix();
float texw=0, texh=0;
if (texture) {
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
if (SDL_GL_BindTexture(texture, &texw, &texh) != 0)
printf("WTF\n");
}
glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(color[0], color[1], color[2], color[3]);
glVertexPointer(2, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 0, uvs);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// if (num_vertices > 0) {
glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_SHORT, indices);
glDisableClientState(GL_VERTEX_ARRAY);
// glDisableClientState(GL_COLOR_ARRAY);
if (texture) {
SDL_GL_UnbindTexture(texture);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
glColor4f(1.0, 1.0, 1.0, 1.0);
glPopMatrix();
【问题讨论】:
-
那些
SDL_GL_BindTexture()/SDL_GL_UnbindTexture()调用(使用SDL_Textures,而不是GLuints)在那里做什么?假设texture是GLuint就像glGenTextures()要求一样,那怎么会编译?在minimal reproducible example 中编辑。
标签: c++ opengl sdl render-to-texture spine