Я работаю над отладкой этой ошибки < /p>
ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
< /code>
Хотя я нигде не вижу в своем коде, что мне не хватает точки входа. Кто -нибудь знает, как решить эту проблему? < /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>
Это код, который я написал для использования этого GLSL. Я работаю над тем, чтобы получить шейдер для работы и компиляции. Однако вышеуказанный вопрос - текущий результат, который я получаю. Я не знаю о каких -либо проблемах в моем коде ниже, которые могут вызвать проблему. Я возвращался снова и снова, чтобы посмотреть, смогу ли я решить это без повезло. Я назвал функции в других частях моей программы. Однако при вводе и создании этого шейдера появляется ошибка. Перед входом в приведенный ниже код я работал не в порядке. Любая помощь будет высоко оценена. < /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);
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... ires-one-e
Ошибка GLSL: Связывание Стадии вершины: Отсутствие точки входа: Каждый этап требует одной точки входа ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как использовать функцию с первой стадии во второй этап в Docker Multist -Build?
Anonymous » » в форуме Linux - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-