ジオメトリシェーダーで点データから正方形を描きたいです。
では、vertex shader
一点を放出します。
#version 330 core
void main() {
gl_Position = vec4(0, 0, 0, 1.0);
}
ジオメトリ シェーダーで、正方形を形成する三角形のストリップを作成したいと考えています。
現時点ではサイズは関係ないので、モデルのサイズは1
((-0.5, -0.5) から (+0.5, +0.5) までの範囲) である必要があります。
コードに表示されているように、放出された頂点の位置を計算するのに助けが必要です:
#version 330 core
layout(points) in;
layout(triangle_strip, max_vertices=4) out;
out vec2 tex_coord;
uniform mat4x4 model;
uniform mat4x4 view;
uniform mat4x4 projection;
void main() {
int i;
for(i = 0; i < gl_in.length(); ++i) {
mat4x4 trans;
trans = //???
gl_Position = projection * view * model * trans * gl_in[i].gl_Position;
tex_coord = vec2(0, 0);
EmitVertex();
trans = //???
gl_Position = projection * view * model * trans * gl_in[i].gl_Position;
tex_coord = vec2(1, 0);
EmitVertex();
trans = //???
gl_Position = projection * view * model * trans * gl_in[i].gl_Position;
tex_coord = vec2(1, 1);
EmitVertex();
trans = //???
gl_Position = projection * view * model * trans * gl_in[i].gl_Position;
tex_coord = vec2(0, 1));
EmitVertex();
}
EndPrimitive();
}
trans
初期点を目的の座標に変換するために使用することを考えました。どうすればこれを理解できますか?
明確にするために編集する
頂点バッファによって他に何が与えられるかを単一の点から生成したい。単一の平面:
float vertex[] {
-0.5, 0.5, 0.0,
0.5, 0.5, 0.0,
0.5, -0.5, 0.0,
-0.5, -0.5, 0.0
}
代わりに、これらのポイントの中間にあるポイントのみを指定し、中心の差 (0.5 と -0.5 など) を減算および加算して実際のポイントを生成したいと考えています。必要なのは、この変換をコード (どこにあるのか) に適用する方法を知ることだけ???
です。