关于 glBindTexture 的问题
这是我用来绘制精灵的一种方法:
public void DrawSprite(Sprite sprite)
{
Gl.glBegin(Gl.GL_TRIANGLES);
{
for (int i = 0; i < Sprite.VertexAmount; i++)
{
Gl.glBindTexture(Gl.GL_TEXTURE_2D, sprite.Texture.Id);
DrawImmediateModeVertex(
sprite.VertexPositions[i],
sprite.VertexColors[i],
sprite.VertexUVs[i]);
}
}
Gl.glEnd();
}
DrawImmediateModeVertex
- 绘制一个顶点。
我应该将 Gl.glBindTexture
从 for 循环中取出吗?当我渲染纹理时,也会发生奇怪的事情,即使我提供具有不同纹理 ID 的精灵,每次也只绘制一个相同的纹理。
This is a method I use to draw sprites:
public void DrawSprite(Sprite sprite)
{
Gl.glBegin(Gl.GL_TRIANGLES);
{
for (int i = 0; i < Sprite.VertexAmount; i++)
{
Gl.glBindTexture(Gl.GL_TEXTURE_2D, sprite.Texture.Id);
DrawImmediateModeVertex(
sprite.VertexPositions[i],
sprite.VertexColors[i],
sprite.VertexUVs[i]);
}
}
Gl.glEnd();
}
DrawImmediateModeVertex
- draws one vertex.
Should I get Gl.glBindTexture
out of the for loop? Also strange things happen when I render a texture, even though i provide sprites with different texture ids, just one same texture is drawn every time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自 OpenGL 文档:
您应该在
glBegin
...glEnd
对之外提取glBindTexture
From OpenGL documentation:
You should extract
glBindTexture
outsideglBegin
...glEnd
pair是的,将绑定移到循环之外,无需重复绑定相同的纹理。
Yes, move the bind outside of the loop, no need to repeatedly bind the same texture.