我正在开发一个tilemapping游戏引擎,我有一个CPU处理的照明,如我的世界不顺利闪电(左侧):
我需要在灯光更新或灯光更新时更改每个瓷砖的颜色。现在,我正在使用它来着色和翻译vbo:
GL.BindTexture(TextureTarget.Texture2D, tile.states[tile.animationstate]);
GL.PushMatrix();
GL.Translate(position.X, position.Y, 0);
GL.Color3(col);
GL.EnableClientState(ArrayCap.VertexArray);
GL.EnableClientState(ArrayCap.TextureCoordArray);
GL.BindBuffer(BufferTarget.ArrayBuffer, tile.vbo);
GL.VertexPointer(2, VertexPointerType.Float, Vertex.SizeInBytes, 0);
GL.TexCoordPointer(2, TexCoordPointerType.Float, Vertex.SizeInBytes, Vector2.SizeInBytes);
GL.DrawArrays(PrimitiveType.Quads, 0, 4);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
GL.PopMatrix();
GL.Color3
(相当于glColor3f
),游戏性能从1000 fps增加到830 fps。如何动态更改切片的颜色?
地图的每个图块都没有vbo。每个图块图像都有它的vbo和纹理,地图是int [,]。位置中的地图值用于拼贴数组:
Render(map.tiles[map.level[x, y]]);
我已经尝试过使用GL.SubBufferData
,但是每次使用4次抽取来渲染磁贴时,fps会降低到74.我不想使用GL.ColorPointer
,因为每个都使用了$ curl -v http://localhost:3000/api/users --data "{ 'user_name':'xsa', 'email':'foo@bar.baz' }"
正在绘制的瓷砖。