這是我用來繪製精靈的方法:問題有關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
- 繪製一個頂點。
我應該從for循環中獲得Gl.glBindTexture
嗎?當我渲染紋理時也會發生奇怪的事情,即使我提供不同紋理ID的精靈,每次只繪製一個相同的紋理。
這一點,你應該preferrably不綁定的每一個角色_at ALL_一個新的紋理反正。綁定紋理需要在驅動程序中進行不平凡的工作,而每個頂點立即模式已經不是非常高的性能,而成千上萬的紋理綁定會額外地影響性能。通過紋理對精靈進行排序是正確的事情,但即使將紋理標識符緩存到變量中,只有在最後一個已知值不是當前值的情況下才進行綁定將會更好。 – Damon