После добавления кадрового буфера и последующего рисования в нем координата фрагмента кадрового буфера по умолчанию y становится -600 внизу, а верх - 0, вместо того, чтобы низ был равен 0, а верх - 600.
Я повозился с размером окна, размером буфера кадра и областью просмотра. Но ничто не изменило координату фрагмента с отрицательного значения.
В тот момент, когда я рисую в буфере кадра, координата фрагмента меняется.
Чтобы проверить фрагмент координаты, я проверяю, превышает ли координата y -300, и если да, то делаю цвет ярче. Поскольку значение достигает -600, загорается половина экрана.
Вот код для воспроизведения ошибки, шейдеры для простоты включены на одну страницу:
#include
#include
#include
// vertex shader
const char* vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";
// fragment shader
const char* fragmentShaderSource = "#version 330 core\n"
"out vec4 FragColor;\n"
"vec4 light = vec4(0.1f, 0.1f, 0.1f, 0.1f);\n"
"void main()\n"
"{\n"
"if (gl_FragCoord.y > -300)\n"
"{\n"
"light = vec4(1.0f, 1.0f, 1.0f, 1.0f);\n"
"}\n"
"FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f) * light;\n"
"}\n\0";
const int Width = 800;
const int Height = 600;
int main()
{
glfwInit();
GLFWwindow* window = glfwCreateWindow(Width, Height, "Test",
NULL, NULL);
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout
Подробнее здесь: https://stackoverflow.com/questions/786 ... ame-buffer