我在制作我的第一个着色器时获得了一些乐趣,我的第一个测试对象是一张 100x100 四面体的图片。我想我会学习如何使用TRIANGLE_STRIP
,所以我切换了它,移动了一个顶点调用,让它看起来又是方形的。打开我的着色器,它后面只有一张脸的副本,但它上面有整个纹理。对于这个形状,我只有一组绘制调用....
这是我的形状代码:
glBegin(GL_TRIANGLE_STRIP);
float vx;
float vy;
for(float x=0; x<100; x++){
for(float y=0; y<100; y++){
float vx=x/5.0;
float vy=y/5.0;
glTexCoord2f(0.01*x, 0.01*y);
glVertex3f(vx, vy, 0);
glTexCoord2f(0.01+0.01*x, 0.01*y);
glVertex3f(.2+vx, vy, 0);
glTexCoord2f(0.01*x, 0.01+0.01*y);
glVertex3f(vx, .2+vy, 0);
glTexCoord2f(0.01+0.01*x, 0.01+0.01*y);
glVertex3f(.2+vx, .2+vy, 0);
}}
glEnd();
还有我的(顶点)着色器代码:
uniform float uTime,uWaveintensity,uWavespeed;
uniform float uZwave1,uZwave2,uXwave,uYwave;
void main(){
vec4 position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
position.z=((sin(position.x+uTime*uWavespeed)*uZwave1)+(sin(position.y+uTime*uWavespeed))*uZwave2)*uWaveintensity;
position.x=position.x+(sin(position.x+uTime*uWavespeed)*uXwave)*uWaveintensity;
position.y=position.y+(sin(position.y+uTime*uWavespeed)*uYwave)*uWaveintensity;
gl_Position = gl_ModelViewProjectionMatrix * position;
}
如果有人有任何关于使用共享顶点(triangle_strips)更有效地绘制的信息,我已经用谷歌搜索了,但到目前为止我还不了解 XD。我想知道。
屏幕截图:8x8 面
相同的东西相同的角度,线条=鬼
我看到现在发生了什么,但我不知道如何解决它。