2013-03-21 4 views
0

몇 가지 연구를 한 후에는 화면에 많은 스프라이트를 동시에 그리는 가장 효율적인 방법으로 vertexArrays를 사용하는 것으로 나타 났지만 어떻게해야하는지 고심하고 있습니다. 나는 sfml 포럼을 사용하려고 시도했지만, 필자가 본 모든 예는 지금까지 구식 코드였습니다.sfml에서 vertexArray를 사용하는 올바른 방법은 무엇입니까?

int main() 
{ 
    sf::VertexArray lines(sf::LinesStrip, 4); 
    lines.append(sf::Vertex(sf::Vector2f(0, 0),sf::Vector2f(0, 0))); 
    lines.append(sf::Vector2f(0, 50)); 
    lines.append(sf::Vector2f(250, 50)); 
    lines.append(sf::Vector2f(250, 0)); 

    sf::Texture text; 
    text.loadFromFile("Content/StartGame.png"); 

    sf::RenderStates rend(&text); 

    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics"); 

    // Start game loop 
    while (App.isOpen()) 
    { 
     // Process events 
     sf::Event Event; 
     while (App.pollEvent(Event)) 
     { 
      // Close window : exit 
      if (Event.type == sf::Event::Closed) 
       App.close(); 
     } 
     App.clear(); 
     App.draw(lines, &text); 
     App.display(); 
    } 
} 

도형이 있지만 텍스처에 적용하려고해도 아무 것도 그려지지 않습니다.

답변

2

그냥 같이 사용 : 당신이 SF를 구성 할 때 :: Vector2f을 당신은 어떤 질감을 공급하지 않는

sf::VertexArray lines(sf::LinesStrip, 4); 
lines[0].position = sf::Vector2f(10, 0); 
lines[1].position = sf::Vector2f(20, 0); 
lines[2].position = sf::Vector2f(30, 5); 
lines[3].position = sf::Vector2f(40, 2); 

window.draw(lines); 
+0

텍스처가 어떻게 적용될 수 있습니까? – user1725794

+1

버텍스 클래스는 텍스쳐'lines [0] .texCoords = sf :: Vector2f (x, y);를 지정하는 데 사용할 수있는 클래스 멤버 texCoords를 가지고 있습니다. – Fouf

2

좌표; 마찬가지로 세번째 파라미터 일부 텍스처 좌표에 건네

lines.append(sf::Vertex(sf::Vector2f(0, 0),sf::Vector2f(0, 0), sf::Vector2f(0,0))); 

텍스처 좌표이어야 것을 0,0, 0,1, 1,01,1있다.

도형 유형을 sf::Quads으로 변경해야 할 수도 있습니다. SFML을 사용한 지 오래 되었기 때문에 사실 일 수도 있고 아닐 수도 있습니다.

+0

'code' \t sf :: VertexArray lines :: Quads, 4); lines.append (sf :: Vertex (sf :: Vector2f (0, 0), sf :: Vector2f (0, 0))); \t lines.append (sf :: Vertex (sf :: Vector2f (0, 50), sf :: Vector2f (0, 50)))); \t lines.append (sf :: Vertex (sf :: Vector2f (250, 50), sf :: Vector2f (250, 50)))); \t lines.append (sf :: Vertex (sf :: Vector2f (250, 0), sf :: Vector2f (250, 0)))); 일부 상식을 적용하고 관리하기도했습니다. 이제이 코드를 적용하여보다 효율적인 방식으로 작업을 수행하는 방법을 배웁니다. – user1725794

관련 문제