2013-10-09 54 views
-1

不工作我學習的http://www.glprogramming.com/red/chapter05.htmlOpenGL的光例如使用的等效代碼LWJGL

描述成功運行C語言編寫的例子後,「light.c」的例子,我修改它畫一個框,而不是一個球。之後,我還使用LWJGL將C代碼翻譯成Java。但是,Java版本根本不起作用。

無論是C和Java版本在https://gist.github.com/stfairy/d2aa2f48a9a5801ae72e

下面的屏幕截圖是預期的結果粘貼(這是由C版本生成的,但在Java版本只給出了一個黑窗口)

expected result

+0

我不明白爲什麼會收到downvote以及投票結束它。如果您認爲這不合適,請在此留言。 –

+0

90%的代碼已被棄用,請不要使用已棄用的OpenGL函數。 – Vallentin

+1

@Vallentin我只是想用一些基本的例子來學習LWJGL。這些函數在最新版本的OpenGL中不推薦使用,但在LWJGL中不推薦使用。這是LWJGL的一個問題。 –

回答

1

將此問題發佈到LWJGL論壇後,我收到了回覆,現在我已經修復了。

我想通了是因爲我不明白nio.Buffer是如何工作的。在將values寫入buffer之後,我們還需要通過調用rewind()來重置光標位置,否則它將使用零填充材料和燈光位置。最終代碼如下。

private FloatBuffer floatBuffer(float... values) { 
    FloatBuffer buffer = BufferUtils.createFloatBuffer(Math.max(4, values.length)); 
    buffer.put(values); 
    return (FloatBuffer) buffer.rewind(); 
}