如何解决翻转纹理侧切成两半,左侧的纹理绘制在右侧,右侧的纹理绘制在左侧
我需要将纹理切成两半,然后更改它们的侧面(纹理的左部分到右角,右纹理到左角)。
我使用OpenGl.net框架。
enter image description here enter image description here
首先,我要进行这种增加:
-
glTexElem从6到12,
-
VertexAttribPointer的大小,
-
大小BufferData,
var glTexElements = new[] { 0u,1u,3u,2u,4u,5u }; ... Gl.BufferData(BufferTarget.ElementArrayBuffer,(uint)(sizeof(uint) * glTexElements.Length),glTexElements,BufferUsage.StaticDraw); Gl.BindBuffer(BufferTarget.ElementArrayBuffer,0);
接下来,我创建一个顶点,在其中放置两个半纹理(添加更多顶点):
var verticies = new float[]
{
//positions // texture coords
800/2,0.5f,1f,// bottom right
800/2,600,0f,// top right
0,// top left
0,1f // bottom left,800,1.0f,// bottom right
800,// top right
800/2,// top left
800/2,1f // bottom left
};//work
并绘制:
...
Gl.BufferSubData(
BufferTarget.ArrayBuffer,IntPtr.Zero,(uint)(sizeof(float) * verticies.Length),verticies);
Gl.BindBuffer(BufferTarget.ElementArrayBuffer,_glTexArrayElemBuffer);
Gl.DrawElements(PrimitiveType.Triangles,12,DrawElementsType.UnsignedInt,IntPtr.Zero);
...
现在可以正常工作了,但是当我尝试在屏幕左侧将纹理的正确部分放置到屏幕左侧时,
var verticies = new float[]
{
//positions // texture coords
800/2,1f // bottom left
...
}//left side - right piece of texture -> dont work
当位置和纹理坐标错误时,当我绘制一半时它们也会出错。
我想在着色器中我什么都不需要改变。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。