我希望我的程序为我画一个简单的红色三角形。顶点和片段着色器应该通过我的 loadShader() 函数从外部文件加载,但由于某种奇怪的原因,我的 loadShader() 函数正在读取非 ASCII 字符,这样就会生成着色器编译错误。
尝试按照此处提供的说明(使用 Notepad++)将我的两个着色器文件转换为 ASCII 格式失败,因为结果是相同的——即关于非 ASCII 字符的着色器编译器错误(参见下面的屏幕截图)和白色而不是预期的红色三角形(由于着色器未编译)。
进一步的故障排除尝试:
(注意:我另外上传了我的源代码到Pastebin以便于引用行号。)
关键代码部分从 14 到 44 —— 我的 loadShader 函数。从第 22 行开始的“告诉文件大小”部分工作正常,如下面的屏幕截图所示,因为我的调试输出(第 25 行)与 Windows 资源管理器提供的文件大小具有相同的字节数。此外,缓冲区(第 28 行)与第 41 行的调试输出中所证明的着色器文件大小完全对应(参见屏幕截图)。最后,我的两个着色器的语法是正确的,因为我之前对它们进行了硬编码,结果是所需的红色三角形渲染。
截屏:
源代码:
// Expected result: Draws a simple red colored triangle to the screen
// Problem to debug: Why does my loadShader function read non-ASCII characters?
#include <glad/glad.h>
#define GLFW_DLL
#include <GLFW\glfw3.h>
#include <cstdio>
#include <iostream>
// TODO: Debug
/* Loads shader text …Run Code Online (Sandbox Code Playgroud)