GLSL -Fehler: VerknüpfenJava

Java-Forum
Anonymous
 GLSL -Fehler: Verknüpfen

Post by Anonymous »

Ich arbeite daran, diesen Fehler zu debuggen < /p>

Code: Select all

ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
< /code>
Obwohl ich in meinem Code nicht überall sehe, wo ich einen Einstiegspunkt fehlt. Weiß jemand, wie man dieses [url=viewtopic.php?t=19220]Problem[/url] behebt? < /P>
#type vertex
#version 330 core

layout (location=0) in vec3 aPos;
layout (location=1) in vec4 aColor;

out vec4 fColor;

void mian(){
fColor = aColor;
gl_Position = vec4(aPos,1.0);
}

#type fragment
#version 330 core

in vec4 fColor;

out vec4 color;

void main (){
color = fColor;
}
< /code>
Dies ist der Code, den ich für diese GLSL verwendet habe. Ich arbeite daran, einen Shader zum Arbeiten zu bringen und zu kompilieren. Das obige [url=viewtopic.php?t=19220]Problem[/url] ist jedoch das aktuelle Ergebnis, das ich bekomme. Ich bin mir keine Probleme in meinem Code unten bewusst, die das [url=viewtopic.php?t=19220]Problem[/url] verursachen könnten. Ich bin immer wieder zurückgegangen, um zu sehen, ob ich dies ohne Glück lösen kann. Ich habe die Funktionen in anderen Teilen meines Programms angerufen. Beim Eingeben und Erstellen dieser Shader -Datei wird jedoch der Fehler angezeigt. Bevor ich den folgenden Code eingab, arbeitete mein Programm ohne Ausfall. Jede Hilfe wäre sehr geschätzt.  < /P>
public class Shader {

private int shaderProgramID;

private String vertexSource;
private String fragmentSource;
private String filepath;

public Shader(String filepath){
this.filepath = filepath;
try{
String source = new String(Files.readAllBytes(Paths.get(filepath)));
String[] splitSting = source.split("(#type)( )+([a-zA-Z]+)");

//First pattern to find after #type 'pattern'
int index = source.indexOf("#type") + 6;
int eol = source.indexOf("\r\n", index);
String firstPattern = source.substring(index, eol).trim();

//Second pattern to find after #type 'pattern'
index = source.indexOf("#type", eol) + 6;
eol = source.indexOf("\r\n", index);
String secondPattern = source.substring(index, eol).trim();

if(firstPattern.equals("vertex")){
vertexSource = splitSting[1];
}else if(firstPattern.equals("fragment")){
fragmentSource = splitSting[1];
}else{
throw new IOException("Unexpected token '" + firstPattern + "'");
}

if(secondPattern.equals("vertex")){
vertexSource = splitSting[2];
}else if(secondPattern.equals("fragment")){
fragmentSource = splitSting[2];
}else{
throw new IOException("Unexpected token '" + firstPattern + "'");
}
} catch (IOException e) {
e.printStackTrace();
assert false : "Error: Could not open file for shader: '" + filepath + "'";
}

System.out.println(vertexSource);
System.out.println(fragmentSource);
}

public void compile(){
int vertexID, fragmentID;

//compile and link the shaders

//load and compile the vertex shader
vertexID = glCreateShader(GL_VERTEX_SHADER);
//pass the shader source to the GPU
glShaderSource(vertexID, vertexSource);
glCompileShader(vertexID);

//check for errors in compilation
int success = glGetShaderi(vertexID, GL_COMPILE_STATUS);
if (success == GL_FALSE){
int len = glGetShaderi(vertexID, GL_INFO_LOG_LENGTH);
System.out.println("ERROR: '" + filepath + "'\n\tVertex Shader Compilation failed");
System.out.println(glGetShaderInfoLog(vertexID, len));
assert false : "";
}

//load and compile the vertex shader
fragmentID = glCreateShader(GL_FRAGMENT_SHADER);
//pass the shader source to the GPU
glShaderSource(fragmentID, fragmentSource);
glCompileShader(fragmentID);

//check for errors in compilation
success = glGetShaderi(fragmentID, GL_COMPILE_STATUS);
if (success == GL_FALSE){
int len = glGetShaderi(fragmentID, GL_INFO_LOG_LENGTH);
System.out.println("ERROR: '" + filepath + "'\n\tFragment Shader Compilation failed");
System.out.println(glGetShaderInfoLog(fragmentID, len));
assert false : "";
}

//link shaders and check for errors
shaderProgramID = glCreateProgram();
glAttachShader(shaderProgramID, vertexID);
glAttachShader(shaderProgramID, fragmentID);
glLinkProgram(shaderProgramID);

//check for linking errors
success = glGetProgrami(shaderProgramID, GL_LINK_STATUS);
if(success == GL_FALSE){
int len = glGetProgrami(shaderProgramID, GL_INFO_LOG_LENGTH);
System.out.println("ERROR: '" + filepath + "'\n\tLinking of shaders failed");
System.out.println(glGetProgramInfoLog(shaderProgramID, len));
assert false : "";
}
}

public void use(){
//bind shader program
glUseProgram(shaderProgramID);
}

public void detach(){
glUseProgram(0);
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post