C++ glew使屏幕在红色和黑色之间闪烁。高兴的工作
我正在MacOS 10.14.3上编程,它支持OpenGL 4.1 我将glfw用于ui,将glew用于扩展检测 这是迄今为止我的代码:C++ glew使屏幕在红色和黑色之间闪烁。高兴的工作,c++,macos,opengl,glfw,glew,C++,Macos,Opengl,Glfw,Glew,我正在MacOS 10.14.3上编程,它支持OpenGL 4.1 我将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 <
#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;
}
好了,现在可以正常工作了。。。但我想用glew。。。造成这种情况的原因可能是什么?您有什么屏幕缓冲区格式?是单缓冲还是双缓冲?@BenVoigt-这是完整的代码。。我想我没有设置一些东西来启用双缓冲?:)我真的是个新手,如果我帮不上忙,那么很抱歉,文档中说glfw使用双缓冲我的默认值添加glfwWindowHint(glfw_DOUBLEBUFFER,GL_TRUE);提供相同的结果
glClearColor
只需调用一次,它告诉OpenGL使用哪种颜色来清除缓冲区glClear
必须在每一帧调用(除非您确定覆盖了每一个像素),并实际使用之前指定的颜色清除缓冲区。
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}