我正在尝试在 C++ 中开始使用 openGL 和 GLFW。我的期望是下面的代码将简单地在屏幕上呈现一个正方形,但我只是得到一个黑屏。
虽然实际设置有效,因为如果我添加 glClearColor(0.1f, 0.4f, 0.8f, 1.0f);
,我确实会出现蓝屏。但是我使用 GL_QUADS 有什么问题呢?
#include <iostream>
// GLEW
#define GLEW_STATIC
#include <GL/glew.h>
//GLFW
#include <GLFW/glfw3.h>
const GLint WIDTH = 800, HEIGHT = 600;
int main() {
glfwInit();
glfwWindowHint( GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint( GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint( GLFW_RESIZABLE, GL_TRUE);
GLFWwindow *window = glfwCreateWindow(WIDTH, HEIGHT, "Isosurface Stuffing", nullptr, nullptr);
int screenWidth, screenHeight;
glfwGetFramebufferSize(window, &screenWidth, &screenHeight);
if (window == nullptr) {
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
if (GLEW_OK != glewInit()) {
std::cout << "Failed to create GLEW" << std::endl;
return -1;
}
while (!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glViewport(0, 0, screenWidth, screenHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, screenWidth, 0.0f, screenHeight, 0.0f, 1.0f);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
glfwPollEvents();
glColor3f(0.5f, 0.5f, 0.5f);
glBegin(GL_QUADS);
glVertex2f(100, 100);
glVertex2f(200, 100);
glVertex2f(200, 200);
glVertex2f(100, 200);
glEnd();
glfwSwapBuffers(window);
}
glfwTerminate();
return 0;
}
最佳答案
您不能使用传统的固定功能流水线指令(glBegin
、glEnd
、glVertex2f
、glMatrixMode
、 glLoadIdentity
, glOrtho
) 在核心配置文件 OpenGL 上下文中 (GLFW_OPENGL_CORE_PROFILE
)。您必须使用兼容性配置文件 OpenGL Context :
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);
如果您的系统不允许您创建兼容性配置文件上下文(例如 Mac),您必须使用 OpenGL 2.0 上下文或带有着色器和顶点数组对象的现代 OpenGL。一个很好的教程是 LearnOpenGL
关于c++ - 为什么 OpenGL GLFW 渲染形状不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74169281/