Я пытаюсь повернуть 2D-треугольник в OpenGL и SFML, но по какой-то причине я получаю черный экран. Без бита вращения код работает нормально и отображает 2D-треугольник, как он должен, поэтому я знаю, что это код вращения, вызывающий черный экран.Вращающийся треугольник вызывает черный экран?
Вот мой код:
#include <SFML/Window.hpp>
int drawTri()
{
GLfloat rtri;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -6.0f);
glRotatef(rtri, 0.0f, 1.0f, 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0.0f, 1.0f, 0.0f);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(1.0f, -1.0, 0.0f);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 0.0f);
glColor3f(0.0f, 0.0f, 1.0f);
glEnd();
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -6.0f);
rtri+=0.2f;
return 0;
}
int main()
{
sf::WindowSettings winSet;
winSet.DepthBits = 24;
winSet.StencilBits = 8;
winSet.AntialiasingLevel = 2;
sf::Window App(sf::VideoMode(640, 480, 32), "Practice", sf::Style::Close, winSet);
bool isRunning = true;
while(App.IsOpened())
{
sf::Event aEvent;
if(App.GetEvent(aEvent))
if(aEvent.Type == sf::Event::Closed)
isRunning = false;
drawTri();
if(!isRunning)
App.Close();
App.Display();
}
}
here's учебник я учусь с.
Я не думаю, что мне нужны заголовки в верхней части учебного кода, но я новичок, поэтому я мог ошибаться.
Использование glTranslatef (0.0f, 0.0f, -6.0f); вы перемещаете свой треугольник SIX UNITS в направлении -z, который на самом деле в этом случае, с матрицей представлений и проекций по умолчанию, является НЕСКОЛЬКИМИ ЭКРАНАМИ вне поля зрения! –
, и я думаю, вы пропустили хотя бы один glMatrixMode здесь –
Я думал, что glMatrixMode был только при работе с 3D-объектами:/oops. – user2727356