У меня есть очень простой код OPENGL:glClear иногда работает, а иногда нет
screen.cpp
#include <GL/glew.h>
#include <GL/freeglut.h>
#include <GL/gl.h>
#include <iostream>
#define WIDTH 683
#define HEIGHT 384
void init() {
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glutSwapBuffers();
}
int main(int argc, char* argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(WIDTH, HEIGHT);
glutCreateWindow("test");
glutDisplayFunc(display);
GLenum res = glewInit();
if (res != GLEW_OK) {
std::cout<<"Error: "<<glewGetErrorString(res)<<std::endl;
return 1;
}
init();
glutMainLoop();
return 0;
}
вещь странно этот код иногда работает, а иногда нет. Я ожидаю получить белый пустой экран, и когда я запускаю эту программу, случайным образом и чаще, я просто получаю прозрачный экран, показывающий, что было до того, как программа была запущена. Иногда программа работает правильно и показывает мне пустой белый экран. В чем проблема?
скомпилирован с: г ++ -o экран screen.cpp -g -Wall -std = C++ 11 -lGLEW -lglut -lGL
Причина, по которой я его отключил, состояла в том, что я не установил GLUT_ALPHA в glutInitDisplayMode(). Я установил его как 1, и он все еще производит непоследовательные результаты. – user3064869
Это не изменит ситуацию. Значение альфа-компонента в прозрачном цвете определяет только значение, которое записывается в альфа-компонент в фреймбуфере. Это не изменяет то, что отображается на экране, это имеет значение только при использовании смешивания. И если вы используете смешивание, вы обычно ** хотите ** очистить альфу до нуля. –