我在这里找到了类似的帖子,但没有一个能帮助我解决我的问题。我只是使用基本的 OpenGL,并尝试绘制一个应用了纹理的三角形。但出于某种原因,三角形是一种纯色。这种颜色恰好与纹理的背景颜色相同。
这是我试图绘制的纹理
这是我运行程序时的结果
我已经尝试通过编辑纹理在左下角(原点)有一些蓝色,结果是这样的
我的猜测是它插入红色和蓝色给我紫色。但我不知道为什么它会首先插入颜色而不是像我想要的那样绘制纹理。
这是我的代码相关部分的一些零碎部分:
在主循环之前启用事物
glClearColor(0, 0, 0, 1);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Run Code Online (Sandbox Code Playgroud)
加载着色器
auto vertString = getSource("test.vert");
auto vertSource = vertString.c_str();
GLint vertLength = vertString.length();
auto fragString= getSource("test.frag");
auto fragSource = fragString.c_str();
GLint fragLength = fragString.length();
auto vertShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertShader, 1, &vertSource, &vertLength);
auto fragShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragShader, 1, &fragSource, &fragLength);
//compile shaders
glCompileShader(vertShader);
checkShaderCompilation(vertShader, "vertex shader");
glCompileShader(fragShader);
checkShaderCompilation(fragShader, "fragment shader");
auto program = glCreateProgram();
glAttachShader(program, vertShader);
glAttachShader(program, fragShader);
glBindAttribLocation(program, 0, "i_position");
glBindAttribLocation(program, 1, "i_texCoord"); …Run Code Online (Sandbox Code Playgroud)