dangerdeep:预处理器错误:#version 必须出现在第一行

dangerdeep:预处理器错误:#version 必须出现在第一行

我有一台 Ubuntu 14.04 系统,我尝试安装游戏dangerdeep0.3.0 版本。启动游戏后,我可以选择任务,但游戏崩溃,Linux 控制台上出现以下输出:

console log: $ffffffDanger $c0c0c0from the $ffffffDeep
console log: $ffff00copyright and written 2003 by $ff0000Thorsten Jordan
console log: $ff8000version 0.3.0
console log: $80ff80*** welcome ***
console log: New thread [0xf47a1b40]
console log: Loading...
console log: Textures with non-power-two sizes are supported and used.
console log: fonts loaded (115ms)
console log: textures loaded (74ms)
console log: Music list loaded (141ms)
console log: Loading...
console log: Using OpenGL GLSL shaders...
console log: shader compiled successfully, log:
console log:  
console log: shader compiled successfully, log:
console log:  
console log: compiling failed, log:
console log: 0:3(1): preprocessor error: #version must appear on the first line

console log: End thread [0xf47a1b40]
Caught exception: compiling of shader failed : /usr/share/games/dangerdeep/shaders/modelrender.vshader
Stack trace: (5 frames)
0x8070202 in  at ??:?
0x806d431 in  at ??:0
0x806d4f1 in  at ??:0
0xf7070af3 in __libc_start_main at ??:0
0x804e6a1 in  at ??:0

这可以修复吗?

答案1

这意味着游戏有一个错误,即#versionGLSL 着色器中的指令不在第一行。想象一下,一半的着色器被解析为一个 GLSL 版本,另一半被解析为另一个 GLSL 版本——这毫无意义!所以编译器只是放弃错误。

总体而言,有.drirc文件可以处理类似的行为不当的应用程序,但是xdriinfo options r600 | grep version我看不出有什么可以解决具体问题(但请注意,我看得不太仔细,因此可能会错过)

我认为解决这个问题没有简单的方法。你可以 α) 向游戏开发者报告错误,β) 因为游戏是 FOSS,所以尝试自己修复问题(Mesa 有很多调试选项,例如可以转储 GLSL找出哪个着色器有问题)γ)编辑用户空间驱动程序以忽略该问题,然后编译/安装它。

相关内容