Координата Y фрагмента меняется с -600 на 0 после добавления буфера кадра?C++

Программы на C++. Форум разработчиков
Anonymous
Координата Y фрагмента меняется с -600 на 0 после добавления буфера кадра?

Сообщение Anonymous »

После добавления кадрового буфера и последующего рисования в нем координата фрагмента кадрового буфера по умолчанию 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

Вернуться в «C++»