2011-03-23 62 views
0

我在測試glsl和着色器沒有做我想做的。我有這段代碼來檢索日誌(我使用JOGL)。GLSL鏈接信息登錄中文

gl.glGetShaderInfoLog(vertexShader, INFO_LOG_SIZE, charsWritten, bb); 

我從「bb」中得到字符串並找到奇妙的問號。 我調試,然後我覺得這 Chinese PWNING me

在我的中國谷歌的無限的知識告訴我:

貧嘴違反幾個⁳徑向Tangju Shuiceonliedao Aigeshexiong⁣湖Yanjishuolang⁲穆Quraomangshui方

正如你所看到的,這對我很有幫助:D

我可以更改日誌語言...或其他東西嗎?

謝謝!

回答

1

看起來像是在將一些隨機二進制數據解釋爲一個字符串; Windows在內部使用寬字符(即16位字符),因此高字節中的非零數據將最終呈現一些亞洲腳本。

編輯:(這是一個Java程序,沒有注意到第一) Java的字節緩衝區asCharBuffer解釋在緩衝區中的數據爲寬字符串(即每個字符用兩個字節),而OpenGL的將返回一個字節每個字符字符串。我不是Java嚮導,所以如果我在這裏嘗試一個解決方案,我可能會生成大量的Coded Smorgasbrod。您需要找到一個將每個字符串8位正確轉換爲Java CharBuffer的函數,或者手動將每個返回的字節預置爲零字節。

+0

嘿朋友,這是Java和BB是一個完美初始化的ByteBuffer。 – Khanser 2011-03-24 09:09:36

+0

這裏是更多的:我有2日誌檢索着色器和1日誌檢索的程序和每一個日誌有不同的長度:/ – Khanser 2011-03-24 09:18:32

+0

你是對的人,我創建了一個字節[]與字符'W',' o','t',將字節傳遞給ByteBuffer,CharBuffer的輸出是'?'謝謝! – Khanser 2011-03-24 10:00:58

0

日誌輸出不是由OpenGL生成的,它是由着色器自己生成的。我假設你沒有寫着色器,所以誰用中文寫了日誌信息。

有兩種可能性:或者着色器實際上是用中文日誌寫的,我不知道他們爲什麼試圖告訴你關於gar contra的違規,或者(根據事實判斷,那裏),它實際上不是中文,只是一些隨機字節輸出,並且着色器中存在一個錯誤。

無論哪種方式,問題出在着色器中,而不是用OpenGL的某些設置。

+0

那些着色器是我的1個線測試着色器。我只是搞亂了屬性和東西。首先有main和gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex; – Khanser 2011-03-23 23:57:59

+0

哦。那麼我錯了,我不知道問題會是什麼。 :|抱歉! – mgiuca 2011-03-24 00:01:29

+0

頂點有main和gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;片段有main和gl_FragColor = vec4(1.0,0.6,1.0,1.0);我測試了着色器的鏈接狀態,並且opengl告訴我有錯誤,並且當我讀取日誌時出現該消息。 – Khanser 2011-03-24 00:03:58