シェーダーをインポートして有効にしたり無効にしたりする LWJGL を使用して Java でクラスを作成したので、有効にするとクールな効果が得られます。問題は、クラスを初期化するたびにクラッシュし、明らかに「glCreateProgram」関数が原因であることです。
public class Shader {
private int Shader;
private int VShader;
private int FShader;
public void InitShader() throws IOException, Exception
{
Shader = glCreateProgram(); //This is where the exception is thrown.
VShader = glCreateShader(GL_VERTEX_SHADER);
FShader = glCreateShader(GL_FRAGMENT_SHADER);
StringBuilder VSHADER_SOURCE = new StringBuilder();
StringBuilder FSHADER_SOURCE = new StringBuilder();
BufferedReader reader1 = new BufferedReader(new FileReader("shader.vert"));
String text1;
while ((text1 = reader1.readLine()) != null)
{
VSHADER_SOURCE.append(text1).append("\n");
}
reader1.close();
BufferedReader reader2 = new BufferedReader(new FileReader("shader.frag"));
String text2;
while ((text2 = reader2.readLine()) != null)
{
FSHADER_SOURCE.append(text2).append("\n");
}
reader2.close();
glShaderSource(VShader, VSHADER_SOURCE);
glCompileShader(VShader);
if (glGetShader(VShader, GL_COMPILE_STATUS) == GL_FALSE)
throw new Exception();
glShaderSource(FShader, FSHADER_SOURCE);
glCompileShader(FShader);
if (glGetShader(FShader, GL_COMPILE_STATUS) == GL_FALSE)
throw new Exception();
glLinkProgram(Shader);
glValidateProgram(Shader);
}
public void EnableShader()
{
glUseProgram(Shader);
}
public void DisableShader()
{
glUseProgram(0);
}
}
それはうまくいき、彼らはランダムに私に立ち寄った. 何が起こっているのか理解できますか?