You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenGL GLFW+GLAD程序可正常清屏但无法绘制三角形求助

问题修复方案

你代码中存在3处核心错误,修改后即可正常渲染三角形:

1. 上下文版本与着色器版本不兼容

你指定了OpenGL 2.0版本上下文,但着色器使用的是#version 330(对应OpenGL 3.3),高版本着色器无法在低版本上下文运行。

修复方案:

将上下文版本修改为3.3核心模式,替换main函数中原有的glfwWindowHint代码:

// 删除原有2.0版本配置
// glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
// glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
// 替换为以下内容
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // 适配Mac系统
#endif

2. 顶点属性数组被禁用

你调用了glDisableVertexAttribArray(0),导致GPU无法读取顶点缓冲区的位置数据,自然无法绘制图形。

修复方案:

将禁用改为启用:

// 删除原有禁用逻辑
// glDisableVertexAttribArray(0);
// 替换为
glEnableVertexAttribArray(0);

3. 错误日志未输出

现有代码虽然捕获了着色器编译、链接错误,但没有输出错误日志,无法第一时间定位版本不兼容问题。可以在Shader类的错误分支添加日志打印逻辑,比如在顶点着色器编译失败的位置添加:

std::cout << "顶点着色器编译失败:" << infoLog.data() << std::endl;

修改完成后重新编译运行,即可看到橙色三角形渲染在深色背景上。

内容的提问来源于stack exchange,提问作者Sarund9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:00:03