gpt4 book ai didi

c++ - VertexShader 在 Windows 上编译失败,相同的代码在 Linux 上有效

转载 作者:行者123 更新时间:2023-11-28 00:25:20 25 4
gpt4 key购买 nike

我正在学习 OpenGL 教程 here .它在我的 Arch Linux 系统上运行良好,但在 Windows 上运行不佳。

我的顶点和片段着色器代码与示例中的完全一样:

片段着色器代码:

#version 330 core

in vec2 UV;
out vec3 color;
uniform sampler2D myTextureSampler;

void main(){
color = texture2D( myTextureSampler, UV ).rgb;
}

顶点着色器代码:

#version 330 core

layout(location = 0) in vec3 vertexPosition_modelspace;
layout(location = 1) in vec2 vertexUV;
out vec2 UV;
uniform mat4 MVP;

void main(){
gl_Position = MVP * vec4(vertexPosition_modelspace,1);
UV = vertexUV;
}

我在 Windows 上遇到以下错误:

ERROR: 0:16: 'texture2D' : no matching overloaded function found (using implicit conversion)
ERROR: 0:16: 'rgb' : field selection requires structure, vector, or matrix on left hand side
ERROR: 0:16: 'assign' : cannot convert from 'const float' to 'FragUserData 3-component vector of float'

您知道问题出在哪里吗?

最佳答案

这在 v330 规范中列为 @mrVoid 提到的。所有旧的纹理采样函数 (1D/2D/3D) 现在都已弃用,您应该使用重载函数:

纹理(...)函数

此函数将根据您提供的采样器类型而改变,因此无需再在函数名称中明确定义您使用的是哪种类型。我在去 GL330 的路上犯了这个错误。

关于c++ - VertexShader 在 Windows 上编译失败,相同的代码在 Linux 上有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25360095/

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