Ошибка GLSL: Связывание Стадии вершины: Отсутствие точки входа: Каждый этап требует одной точки входаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка GLSL: Связывание Стадии вершины: Отсутствие точки входа: Каждый этап требует одной точки входа

Сообщение Anonymous »

Я работаю над отладкой этой ошибки < /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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»