私は最初のシェーダーを作るのを楽しんでいました。最初のテスト対象は100x100のクワッドフェイスの写真でした。使い方を学ぼうと思ったTRIANGLE_STRIP
ので、切り替えて、頂点呼び出しの1つを移動して、再び正方形に見えるようにしました。シェーダーをオンにすると、そのすぐ後ろに1つの面だけの複製がありましたが、全体のテクスチャがありました。この形状の描画呼び出しは1セットしかありません。
これが私の形状コードです:
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面
同じもの同じ角度、lines =ghost
今何が起こっているのかわかりますが、修正する方法がわかりません。