0
glCreateShader()를 호출하면 현재 스레드에서 OpenGL 컨텍스트를 찾을 수 없습니다.쉐이더 생성시 LWJGL OpenGL 문맥이 없습니다.
public void init() {
//glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // commented because I get the same error ..
try {
shaderProgramID = ShaderFactory.createShaderProgram("vertexShader", "fragmentShader");
glUseProgram(shaderProgramID);
bunny = OBJLoader.parseOBJ(new File("src/com/dryadengine/assets/bunny.obj"));
FloatBuffer vbo = BufferUtils.createFloatBuffer(bunny.getVertices().length);
vbo.put(bunny.getVertices());
vbo.flip();
vboID = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vboID);
glBufferData(GL_ARRAY_BUFFER, vbo, GL_STATIC_DRAW);
vPositionID = glGetAttribLocation(shaderProgramID, "vPosition");
glEnableVertexAttribArray(vPositionID);
} catch (FileNotFoundException ex) {
Logger.getLogger(MainDisplay.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MainDisplay.class.getName()).log(Level.SEVERE, null, ex);
}
}
I : 여기
public void create() {
try {
Display.setDisplayMode(new DisplayMode(1920, 1080));
Display.setTitle("Dryad Engine 1.0.0");
Display.setFullscreen(false);
Display.setResizable(true);
} catch (LWJGLException ex) {
Logger.getLogger(MainDisplay.class.getName()).log(Level.SEVERE, null, ex);
System.exit(-1);
}
}
가 초기화 FUNC의 :
여기
public static void main(String[] args) {
MainDisplay md = new MainDisplay();
md.create();
md.init();
md.run();
}
가 생성 FUNC의 : 런타임 예외 여기 내 주요 FUNC의 을 그 일을하기 전에 디스플레이를 초기화했습니다 init 함수에서이 호출의 예외를 얻습니다.
shaderProgramID = ShaderFactory.createShaderProgram("vertexShader", "fragmentShader");
여기 createShaderProgram의 FUNC의 지금
public static int compileShader(int shaderType, String shaderCode) {
int shaderID = glCreateShader(shaderType);
glShaderSource(shaderID, shaderCode);
glCompileShader(shaderID);
int status = glGetShaderi(shaderID, GL_COMPILE_STATUS);
if (status == GL_FALSE) {
glDeleteShader(shaderID);
throw new RuntimeException(glGetShaderInfoLog(shaderID, glGetShaderi(shaderID, GL_INFO_LOG_LENGTH)));
}
return shaderID;
}
예외가이 호출에서오고 더 정확하게하기 위해 지금
public static int createShaderProgram(String vertexShaderName, String fragmentShaderName) throws FileNotFoundException, IOException {
ArrayList<Integer> shaders = new ArrayList();
shaders.add(ShaderFactory.compileShader(GL_VERTEX_SHADER, getShaderFileCode(COMMON_SHADERS_PATH + vertexShaderName + SHADER_EXTENSION)));
shaders.add(ShaderFactory.compileShader(GL_FRAGMENT_SHADER, getShaderFileCode(COMMON_SHADERS_PATH + fragmentShaderName + SHADER_EXTENSION)));
return ShaderFactory.linkProgram(shaders);
}
예외가 compileShader의 FUNC에서오고, 여기에 FUNC입니다 컴파일 쉐이더 함수 :
int shaderID = glCreateShader(shaderType);
openGL이 새로운 쉐이더 프로그램을 생성 할 수없는 것처럼 보입니다. 이유는 무엇입니까? 그거야? 나는 그것을 불러 내기 전에 디스플레이를 초기화했는데 무엇이 될 수 있 었는가?
나는 그것을 바보로 몰아 넣은 그런 바보입니다 ._. 감사 – user3573780