我正在测试glsl并且着色器没有做我想要的。我有这段代码来检索日志(我正在使用JOGL)。
gl.glGetShaderInfoLog(vertexShader, INFO_LOG_SIZE, charsWritten, bb);
我从“bb”中获取字符串并找到了奇妙的问号。
我调试然后我找到了这个
在我对中文的无限了解中,谷歌告诉我:
Gar Gar contra contra several Tang Tang Tang Tang Tang Tang Ai Ai Ai Ai Ai Ai Ai Ai<<<<<<<<<<
你可以看到这对我很有帮助:D
我可以更改日志语言吗?或者其他什么?
谢谢!
答案 0 :(得分:1)
看起来你将一些随机二进制数据表示为字符串; Windows内部使用宽字符(即16位字符),因此高字节中任何非零的数据都将最终呈现一些亚洲脚本。
编辑:(这是一个Java程序,首先没有注意到) Java的ByteBuffer asCharBuffer将缓冲区中的数据解释为宽字符串(即每个字符两个字节),而OpenGL将为每个字符串返回一个字节。我不是Java向导,所以如果我在这里尝试解决方案,我可能会生成很多Coded Smorgasbrod。您需要找到一个函数,将每个字符串的8位正确转换为Java CharBuffer,或者手动将每个返回的字节前置为零字节。
答案 1 :(得分:0)
日志输出不是由OpenGL生成的,而是由着色器本身生成的。我假设你没有写着色器,所以无论谁用中文写了日志信息。
有两种可能性:要么着色器实际上是用中文写的,我不知道为什么他们试图告诉你有关乱窜的违规行为,或者(因为那里有空盒子字符这一事实判断) ),它实际上不是中文,只是一些随机字节输出,并且着色器中有一个错误。
无论哪种方式,问题出在着色器中,而不是在OpenGL的某些设置中。