旋转三角形会导致黑屏?

时间:2013-10-25 20:11:55

标签: c++ opengl rotation sfml

我正在尝试在OpenGL和SFML中旋转2D三角形,但出于某种原因我得到了黑屏。没有旋转位,代码工作正常,并显示一个像它应该的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我正在学习的教程。

我认为我不需要教程代码顶部的标题,但我是新的,所以我可能错了。

1 个答案:

答案 0 :(得分:0)

你首先glTranslate然后glRotate,所以你的相机不看三角形。 您应首先旋转(三角形),然后翻译背板以查看在其中心垂直轴上旋转的三角形。

第二个glTranslate没用。

注意: 自2009年以来,不推荐使用glLoadIdentity,glTranslatef,glRotatef,glBegin,glVertex3f,glColor3f和glEnd(OpenGL 3.1)。