2011-03-23 4 views
0

나는 glsl을 테스트 중이었고 쉐이더는 내가 원하는 것을하지 못했습니다. 로그를 검색하는 코드 조각이 있습니다 (JOGL을 사용하고 있습니다).GLSL 링크 정보 로그인 중국

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

"bb"에서 문자열을 가져 와서 놀라운 물음표를 찾습니다. 내가 디버그하고 내가 중국어 구글의 나의 무한한 지식이 Chinese PWNING me

을 찾을 수는 저에게 말한다 :

수다 위반 여러 ⁳ 반경 Tangju Shuiceonliedao Aigeshexiong ⁣ 호수 Yanjishuolang ⁲ 뮤  Quraomangshui 팡

이 내용은 다음과 같이 매우 유용합니다. D

로그 언어를 변경할 수 있습니까?

감사합니다.

답변

1

일부 임의의 이진 데이터를 문자열로 intrepreing하는 것처럼 보입니다. Windows는 내부적으로 와이드 문자 (예 : 16 비트 문자)를 사용하므로 상위 바이트의 0이 아닌 데이터는 일부 아시아 스크립트 렌더링을 끝냅니다.

편집 : (그것은, 자바 프로그램의 첫 번째 통지를하지 않았다) (즉, 문자 당 두 바이트) 자바의 ByteBuffer asCharBuffer 버퍼의 데이터를 해석 넓은 문자열을 OpenGL은 당신에게 하나를 반환하면서 바이트 당. 자열. 저는 Java 마법사가 아니므로 여기에서 해결책을 찾으려한다면 많은 코드화 된 Smorgasbrod를 생성 할 것입니다. 문자열 당 8 비트를 Java CharBuffer로 제대로 변환하거나 반환 된 각 바이트 앞에 수동으로 0 바이트를 추가하는 함수를 찾아야합니다.

+0

Hey pal, 이것은 Java이고 bb는 완벽하게 초기화 된 ByteBuffer입니다. – Khanser

+0

그리고 여기에 더 있습니다 : 나는 셰이더와 로그 검색을위한 2 개의 로그 검색과 프로그램마다 하나의 로그마다 길이가 다릅니다 :/ – Khanser

+0

당신은 옳은 사람입니다. char [ 'w', ' o ','t '는 ByteBuffer에 바이트를 전달했으며 CharBuffer의 출력은'? '였습니다. 감사! – Khanser

0

로그 출력은 OpenGL에서 생성되지 않으며 셰이더 자체에서 생성됩니다. 당신이 셰이더를 쓰지 않았다고 가정합니다. 그래서 누구든지 중국어로 로그 메시지를 썼습니다.

두 가지 가능성이 있습니다. 셰이더가 실제로 중국어로 로그로 기록되었거나, 왜 그들이 교활한 위반에 대해 말하려고하는지 또는 (빈 상자 문자가 있음을 판단하여 거기에), 실제로는 중국어가 아니며, 임의의 임의 바이트 출력이며 셰이더에 버그가 있습니다.

어느 쪽이든, 문제는 쉐이더에 있으며 OpenGL을 사용하는 일부 설정에서는 아닙니다.

+0

이러한 쉐이더는 광산의 1 라인 테스트 쉐이더입니다. 나는 속성들과 물건들을 망설였다. 우선은 main과 gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex; – Khanser

+0

오. 그렇다면 나는 틀렸고 문제가 무엇인지 알 수 없었습니다. : | 죄송합니다! – mgiuca

+0

꼭지점은 main 및 gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex; 조각에는 main과 gl_FragColor = vec4 (1.0,0.6,1.0,1.0); 나는 쉐이더의 링크 상태를 테스트하고 opengl은 뭔가 잘못되었다고 말하고 로그를 읽을 때 그 메시지가 나타납니다. – Khanser