小编d__*_*d__的帖子

为什么 fgetc() 读取非 ASCII 字符?(尝试加载 GLSL 着色器)

我希望我的程序为我画一个简单的红色三角形。顶点和片段着色器应该通过我的 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)

c++ opengl glsl non-ascii-characters

2
推荐指数
1
解决办法
393
查看次数

标签 统计

c++ ×1

glsl ×1

non-ascii-characters ×1

opengl ×1