我正在使用支持OpenGL 4.1的MacOS 10.14.3进行编程。
我将glfw用于ui,并使用glew进行扩展检测。
这是到目前为止我的代码:
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
const GLint WIDTH = 800, HEIGHT = 600;
int main() {
if (!glfwInit()) {
std::cout << "GLFW initialisation Failed";
glfwTerminate();
return 1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,1);
// Core profile = No Backwards Compatibility
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
// Allow forward compatibility
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);
GLFWwindow *mainWindow = glfwCreateWindow(WIDTH, HEIGHT, "Test Window", nullptr, nullptr);
if (!mainWindow) {
std::cout << "GLFW window creation Failed!";
glfwTerminate();
return 1;
}
// get buffer size information
int bufferWidth, bufferHeight;
glfwGetFramebufferSize(mainWindow,&bufferWidth,&bufferHeight);
// Set context for GLEW to use
glfwMakeContextCurrent(mainWindow);
// Allow modern extension features
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK) {
std::cout << "GLEW initialisation Failed!";
glfwDestroyWindow(mainWindow);
glfwTerminate();
return 1;
}
// Setup viewport size
glViewport(0,0,bufferWidth,bufferHeight);
while(!glfwWindowShouldClose(mainWindow)) {
// Get + handle user input events
glfwPollEvents();
// Clear window
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(mainWindow);
}
return 0;
}
这应该是opengl应用程序的基本启动。它应该初始化glfw并闪烁并将屏幕涂成红色,最重要的是,我可以添加我的opengl绘制/渲染功能。
当我执行它而不是看到具有红色背景色的窗口时,背景色在红色和黑色之间闪烁。
为什么有什么主意?
即使我使用glClearColor选择其他颜色,屏幕也似乎在黑色和红色之间闪烁。
开始认为也许问题不正常。.我将回到高兴的位置,看看是否有任何区别。
通过消除毛刺代码替换毛刺,使用Web界面生成毛刺代码,然后包含glad.h
并将glad.c
添加到编译中,并通过以下方式初始化高兴:
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
现在可以正常工作了...但是我想使用glew ...可能是什么原因引起的?