2012-03-12 3 views
0

OpenGLでいくつかのチュートリアルを実行しています。私はDurianチュートリアルCで始まり、うまくいきます。私はそれをJava + JOGLに移植したい(私はAndroid用に開発するので、JavaでOpenGLを学びたい)、テクスチャを設定するときにエラーが出る。glTexImage2Dの後の「無効な列挙」

コードは次のとおりです。

final int[] gl_textures = new int[1]; 
gl.glGenTextures(1, gl_textures, 0); 
int gl_texture = gl_textures[0]; 

gl.glBindTexture(GL2.GL_TEXTURE_2D, gl_texture); 
gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR); 
gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR); 
gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_S,  GL2.GL_CLAMP_TO_EDGE); 
gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_T,  GL2.GL_CLAMP_TO_EDGE); 

// no error before this 
gl.glTexImage2D(gl_texture, 
    0, 
    GL2.GL_RGB8, 
    image.getWidth(), 
    image.getHeight(), 
    0, 
    GL2.GL_BGR, 
    GL2.GL_UNSIGNED_BYTE, 
    image.getPixelBuffer() 
); 
// invalid enumerant here 

間違っている可能性がどのような任意の手掛かり?

私はOpenGL 2.1を使っています(私は知っていますが、古いですが、OpenGL ESを学ぶのはいいです)。私が言ったように、Cのチュートリアルのコードは正常に動作します。ここで

編集

は、レンダリングのためのコードです。フルバージョンcan be found here

private void render(GLAutoDrawable drawable) { 
    GL2 gl = drawable.getGL().getGL2(); 
    gl.glClear(GL.GL_COLOR_BUFFER_BIT); 

    gl.glUseProgram(m_program); 
    gl.glUniform1f(m_uniform_fade_factor, (float)(0.5)); 

    gl.glActiveTexture(GL2.GL_TEXTURE0); 
    gl.glBindTexture(GL2.GL_TEXTURE_2D, m_textures[0]); 
    gl.glUniform1i(m_uniform_textures[0], 0); 

    gl.glActiveTexture(GL2.GL_TEXTURE1); 
    gl.glBindTexture(GL2.GL_TEXTURE_2D, m_textures[1]); 
    gl.glUniform1i(m_uniform_textures[1], 1); 

    gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, m_vertex_buffer); 
    gl.glVertexAttribPointer(
      m_attribute_position, 
      2, 
      GL2.GL_FLOAT, 
      false, 
      sizeof_float * 2, 
      0 
      ); 
    gl.glEnableVertexAttribArray(m_attribute_position); 

    gl.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, m_element_buffer); 
    gl.glDrawElements(
      GL2.GL_TRIANGLE_STRIP, 
      4, 
      GL2.GL_UNSIGNED_SHORT, 
      0); 
    gl.glDisableVertexAttribArray(m_attribute_position); 

    gl.glFlush(); 

    drawable.swapBuffers(); 

    checkGLError(gl); 


} 

答えて

4

glTexImage2Dコールの最初の引数が間違っています。テクスチャ名ではなくターゲットを置いています。 GL2.GL_TEXTURE_2Dに設定する必要があります。

+0

ありがとう、簡単な間違い。それでも、彼の画面に表示されているものは何もありません:( –

+0

@JakubM。描画コード – datenwolf

+0

@datenwolf:ここに行きます!あなたが助けてくれることを願っています。私は 'swapBuffers'と' glFlush' –

関連する問題