2017-12-08 14 views
0

방금 ​​체스 엔진을 쓰려고했지만, 중요한 점은 게임의 시각적 표현이 멋지다는 것입니다. Visual Studio 프로젝트에서 코드를 구현하려고 시도했습니다. 문제는 프로그램에서로드 된 텍스처 대신 검은 색 화면 만 표시한다는 것입니다.SFML 그래픽 창에서 검정색 화면을 그립니다.

#include <SFML/Graphics.hpp> 
#include <time.h> 
using namespace sf; 

int main(){ 

    RenderWindow window(VideoMode(1000, 1000), "MattseChess!"); 

    Texture t1; 
    t1.loadFromFile("images/board.png"); 
    Sprite s(t1); 

    while (window.isOpen()) 
    { 
     Event e; 

     while (window.pollEvent(e)) { 

      if (e.type == Event::Closed) 
       window.close(); 
    //Draw 
      window.clear(); 
      window.draw(s); 
      window.display(); 
     } 
    } 

    return 0; 
} 

내가 뭘 잘못했는지의 어떤 생각을 가지고 있습니까 :

내 코드는 다음과 같습니다?

답변

0

코드가 작동합니다. board.png를 실행 경로의 images 디렉토리에 두지 않았 음을 확신합니다.

이 이미지를 사용할 수 있는지 확인합니다 :

t1.loadFromFile("images/board.png"); 
+0

확실히 있습니다! 내가 가진 한가지 생각은 프로그램이 실제로 텍스처를로드하지만 그것을 창 밖의 매우 이상한 곳으로 옮겨 보이지 않기 때문입니다. 그게 가능하니? – beinando

+0

안돼. SFML은 윈도우의 0/0에 놓습니다. 그것은 PNG이고 첫 번째 검은 바둑판 필드는 검정색이며 전체 화면을 채우고 있습니까? –

2

는 드로잉 코드 외부 이벤트 루프를 넣어해야합니다. 그렇지 않으면 커서 움직임과 같은 이벤트가 발생할 때마다 그리기 만합니다.

+0

아직 작동하지 않고 그냥 사용해 보았습니다. Visual Studio에서 작동하지 않거나 특수 컴파일 설정이 필요합니까? .dll도 x64로 컴파일 되었기 때문에 x64 대신 x64를 통해 컴파일되었으므로 이전에 오류가 발생했습니다. 지금까지 컴파일 오류 또는 그 밖의 다른 것은 없으며 깨끗한 검은 색 창입니다. – beinando