Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML|OpenGL] sfml renderuje tylko jedną "warstwę" osi z

Ostatnio zmodyfikowano 2017-10-01 14:20
Autor Wiadomość
oigi333
Temat założony przez niniejszego użytkownika
[SFML|OpenGL] sfml renderuje tylko jedną "warstwę" osi z
» 2017-09-30 23:19:50
Piszę FPS, okno sfml oraz openGL do grafiki 3d. Po kilku godzinach orientuje się jednak że sfml renderuje tylko jedną warstwę to dla której wartość na osi z wynosi 0. Czemu tak się dzieje?

Game.cpp
C/C++
#include "Game.h"



std::string Game::Update( sf::RenderWindow * okno )
{
    return "GAME";
}

void Game::Draw( sf::RenderWindow * okno )
{
    glClearColor( 0, 1, 1, 0 );
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();
   
    engine.Draw( okno );
   
}

Game::Game()
{
   
}


Game::~Game()
{
}

Engine.cpp
C/C++
DlsE::Engine::Engine()
{
    quad = Quad(
    Vector3x3 < float >(
    sf::Vector3f( 200 - 200, 200 - 200, 50 ),
    sf::Vector3f( 200 + 200, 200 - 200, 50 ),
    sf::Vector3f( 200 - 200, 200 + 200, - 50 ),
    sf::Vector3f( 200 + 200, 200 + 200, - 50 )
    )
    );
}


DlsE::Engine::~Engine()
{
}

void DlsE::Engine::Draw( sf::RenderWindow * okno )
{
    okno->popGLStates();
    glColor3f( 1, 0, 0 );
   
   
   
    quad.Draw();
    //quad.RotateByDeg(2.f*manager::deltaTime.asSeconds(), 0, 0, sf::Vector3f(SIZEX/2,SIZEY/2,0));
   
    glFlush();
    okno->pushGLStates();
   
   
}

Quad.cpp
C/C++
Quad::Quad()
{
}

DlsE::Quad::Quad( Vector3x3 < float > p )
    : p( p )
{
}


Quad::~Quad()
{
}

void DlsE::Quad::Draw()
{
    glBegin( GL_TRIANGLES );
    glVertex3f( p.topLeft.x, p.topLeft.y, p.topLeft.z );
    glVertex3f( p.topRight.x, p.topRight.y, p.topRight.z );
    glVertex3f( p.bottomRight.x, p.bottomRight.y, p.bottomRight.z );
   
    glVertex3f( p.topLeft.x, p.topLeft.y, p.topLeft.z );
    glVertex3f( p.bottomRight.x, p.bottomRight.y, p.bottomRight.z );
    glVertex3f( p.bottomLeft.x, p.bottomLeft.y, p.bottomLeft.z );
   
    glEnd();
}

void DlsE::Quad::RotateByDeg( float x, float y, float z, sf::Vector3f context )
{
   
    p = RotateX( x * PI / 180.f, p, context );
    p = RotateY( y * PI / 180.f, p, context );
    p = RotateZ( z * PI / 180.f, p, context );
}

sf::Vector3f DlsE::Quad::MakeCenterContext()
{
    return sf::Vector3f(
    ( p.bottomLeft.x + p.bottomRight.x + p.topLeft.x + p.topRight.x ) / 4,
    ( p.bottomLeft.y + p.bottomRight.y + p.topLeft.y + p.topRight.y ) / 4,
    ( p.bottomLeft.z + p.bottomRight.z + p.topLeft.z + p.topRight.z ) / 4 );
}

screenshot
P-165372
1aam2am1
» 2017-10-01 14:20:41
Stworzyłeś bufor "depth" podczas tworzenia okna sfml?
https://github.com/SFML/SFML​/blob/master/include/SFML​/Window/ContextSettings.hpp

W ogóle sfml jest biblioteką 2d nie 3d.
P-165377
« 1 »
  Strona 1 z 1