gpt4 book ai didi

c++ - 标识符 "in"未定义

转载 作者:行者123 更新时间:2023-11-30 02:13:53 31 4
gpt4 key购买 nike

我有这个 Shader.h 文件,我正在用这段代码制作它:

#include <GL\GL.h>
#include <GL/freeglut.h>
#include <glm/glm.hpp>
#include <GL/glew.h>

in vec2 TexCoords;
out vec4 color;

uniform sampler2D text;
uniform vec3 textColor;

void main() {
vec4 sampled = vec4(1.0, 1.0, 1.0, texture(text, TexCoords).r);
color = vec4(textColor, 1.0) * sampled;
}

问题是我从 in vec2 TexCoords; 得到一个错误,说“in”是未定义的。我不确定这是否在库中以及如何在此头文件中正确使用它。我正在学习从 learnOpengl 网站绘制文本的教程:https://learnopengl.com/In-Practice/Text-Rendering

任何人都可以告诉我需要包含哪些 header /库才能使其正常工作或我做错了什么

最佳答案

这里有几个问题。

  1. 您正在混合使用 C++ 和 GLSL

  2. 您缺少定义您正在使用的 GLSL 版本的行。 (GLSL 的第一个版本不支持 'in' 关键字)。

  3. texture() 不是 GLSL 命令,您可能正在寻找 texture2D?

你的着色器应该是这样的:

// Use GLSL 4.5
#version 450

in vec2 TexCoords;
out vec4 color;

uniform sampler2D text;
uniform vec3 textColor;

void main() {
vec4 sampled = vec4(1.0, 1.0, 1.0, texture2D(text, TexCoords).r);
color = vec4(textColor, 1.0) * sampled;
}

另外,您需要编写 C++ 代码来定义几何、指定缓冲区和编译着色器。

关于c++ - 标识符 "in"未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58687482/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com