@sddvxd

Почему программа ведет себя странно?

Здравствуйте

Если в моем коде присутствует следующая строка:

sideY++;

то программа показывает на экран треугольник. Если же уберу ее - то программа перестает нормально работать (пустой экран без треугольника). Я очень удивился, потому что sideY вообще никаких образом не взаимодействует ни с чем:

bool sideY = true;
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);

    while(!glfwWindowShouldClose(window))
    {
        sideY++;
            
        GLuint VBO, VAO;
        glGenBuffers(1, &VBO);
        glBindBuffer(GL_ARRAY_BUFFER, VBO);
        glBufferData(GL_ARRAY_BUFFER, 9 * sizeof(GLfloat), vertexTriangle, GL_DYNAMIC_DRAW);
        glGenVertexArrays(1, &VAO);
        glBindVertexArray(VAO);
        glEnableVertexAttribArray(0);
        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        GLfloat timeValue = glfwGetTime();
        GLfloat greenValue = (sin(timeValue) / 2) + 0.5;
        GLint vertexColorLocation = glGetUniformLocation(shaderProgram, "ourColor");
        glUseProgram(shaderProgram);
        glUniform4f(vertexColorLocation, 0.0f, greenValue, 0.0f, 1.0f);
        glDrawArrays(GL_TRIANGLES, 0, 3);
        glfwPollEvents();
        glfwSwapBuffers(window);
    }


а если уберу строку с ее инкрементацией - программа перестает нормально работать... помогите пожалуйста, голову сломал уже не знаю в чем может быть проблема
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега C++
software engineer
Судя по всему, это просто ограничение для рисования одного треугольника, sydeY был false, после ++ стал true, с тех пор он true. Видимо не весь код приведен, а переменная глобальная.

P.S. Начиная с 17 версии инкремент не работает для bool типов, так что в любом случае надо менять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы