2012-02-17 66 views

回答

5

使用未聲明的標識符gl_Normal。爲什麼?

在OpenGL-ES 2中,在OpenGL-3的核心腳步中,不再有預定義的着色器輸入變量。 OpenGL-4甚至沒有使用預定義的着色器輸出。

相反,您需要定義自己的輸入和輸出。每個輸入或輸出變量分配一個所謂的位置。可以隱式地通過OpenGL,並且可以由glGetAttribLocation檢索,或者由程序員使用location存儲限定符屬性或glBindAttribLocation函數明確地檢索。輸出類似地由片段數據位置分配。

+0

從技術上講,ES2在GL3之前有很大的優勢。最好說GL 3是基於ES 2的,但即使這樣也是不正確的。 – 2012-02-17 15:37:36

+0

@NicolBolas:IIRC OpenGL-3和OpenGL-ES 2是並行開發的,OpenGL-3需要更長的時間才能完成。畢竟像兼容性配置文件等必須包含在規範中。 – datenwolf 2012-02-17 16:16:49

+0

這不是OpenGL 3.0的歷史。 GL 3.0的歷史經歷了一個名爲「Longs Peak」的努力,它是試圖完全重寫OpenGL API的代碼名稱。該重寫嘗試花了2年時間,最終在2008年初失敗(http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Main=47703&Number=243307#Post243307)。 ES 2.0在2007年發佈。因此它*不能基於GL 3.0,因爲3.0仍然是Longs Peak的新API。 – 2012-02-17 16:37:47