TekkunDashi:
私は固体の色にグラデーションから変更に色や私のトライアングルを取得しようとしていますので!私はいただきました!間違って非常にわからないんだけど、私はgradientChangeのための均一な変数に私は大きさをしたのと同じ方法を宣言し、サイズは罰金を動作し、三角形のサイズが大きくなりますが、私はJavaコードでgradientChangeを変更しようとすると、値が変化が、色は三角形に変更されません。また、私は、彼らが、それぞれに別々の行に宣言を持つことができますオンラインご覧すべての例では、GLSLコードの書式設定が、私はそれは、コードを壊しそうしようとしたときに疑問?
public void display(GLAutoDrawable drawable) {
GL4 gl = (GL4) GLContext.getCurrentGL();
gl.glClear(GL_DEPTH_BUFFER_BIT);
gl.glClear(GL_COLOR_BUFFER_BIT);
gl.glUseProgram(renderingProgram);
x+=inc;
if(x>1.0f)inc = -0.01f;
if(x<-1.0f)inc = 0.01f;
int offsetLoc = gl.glGetUniformLocation(renderingProgram, "offset");
gl.glProgramUniform1f(renderingProgram, offsetLoc, x);
int gradientloc = gl.glGetUniformLocation(renderingProgram, "gradientChange");
gl.glProgramUniform1f(renderingProgram, gradientloc, gradientChange);
int sizeloc = gl.glGetUniformLocation(renderingProgram, "size");
gl.glProgramUniform1f(renderingProgram, sizeloc, size);
gl.glDrawArrays(GL_TRIANGLES, 0, 3);
}
これは私のvertShader.glslです
#version 430
out vec4 varyingColor; uniform float offset; uniform int gradientChange; vec4 colorChange; uniform float size;
void main(void)
{ if (gl_VertexID == 0){ gl_Position = vec4(size * (0.25+offset), size * (-0.25), 0.0, 1.0);
colorChange = vec4( 1.0,0.0,0.0,1.0);}
if (gl_VertexID == 1){ gl_Position = vec4(size * (-0.25+offset), size * (-0.25), 0.0, 1.0);
colorChange = vec4( 0.0,1.0,0.0,1.0);}
if (gl_VertexID == 2){ gl_Position = vec4(size * (0.0+offset), size * (0.25), 0.0, 1.0);
colorChange = vec4( 0.0,0.0,1.0,1.0);}
if(gradientChange == 1){varyingColor = vec4( 1.0,0.0,0.0,1.0);}else{varyingColor = colorChange;}
}
Rabbid76:
タイプがgradientChange
ありint
、あなたが使用する必要がglProgramUniform1i
なく、glProgramUniform1f
変数の値を設定する:
(参照してくださいglProgramUniform
)
gl.glProgramUniform1f(renderingProgram, gradientloc, gradientChange);
gl.glProgramUniform1i(renderingProgram, gradientloc, gradientChange);