3

インターネットでこのチュートリアル ( http://lodev.org/cgtutor/raycasting.html )を見つけて興味を持ち、自分で作成したいと思いました。私はそれを SFML でやりたかったのですが、それを拡張して 3D バージョンを作成したかったので、プレイヤーが歩けるさまざまなレベルが存在する可能性がありました。したがって、ピクセルごとに 1 つの光線が必要になるため、各ピクセルを個別に描画する必要があります。これを見つけました ( http://www.sfml-dev.org/tutorials/2.1/graphics-vertex-array.php) チュートリアルで、配列を個々の頂点にするのは簡単に思えました。まず、光線から返されたピクセルを読み取って画面に描画できるクラスを作成するのが最善の方法であると考えました。VertexArray を使用しましたが、何らかの理由で機能しませんでした。問題を切り分けようとしましたが、ほとんど成功しませんでした。画面の一部を埋める緑色のピクセルだけの単純な頂点配列を書きましたが、まだ問題があります。ピクセルには、コードと写真のみが表示されます。私が意味することの。

#include "SFML/Graphics.hpp"  
int main() {
sf::RenderWindow window(sf::VideoMode(400, 240), "Test Window");
window.setFramerateLimit(30);
sf::VertexArray pointmap(sf::Points, 400 * 10);
for(register int a = 0;a < 400 * 10;a++) {
    pointmap[a].position = sf::Vector2f(a % 400,a / 400);
    pointmap[a].color = sf::Color::Green;
}
while (window.isOpen()) {
    sf::Event event;
    while (window.pollEvent(event)) {
        if (event.type == sf::Event::Closed)
        window.close();
    }
    window.clear();
    window.draw(pointmap);
    //</debug>
    window.display();
}
return 0;

}

http://oi43.tinypic.com/s5d9aw.jpg

これは、上位 10 行を緑で埋めるだけのつもりでしたが、どうやらそれは私がやったことではないようです... これが機能しない原因を突き止めることができれば、おそらく主な問題を修正できると思います. また、代わりにこれを行うためのより良い方法があると思われる場合は、お知らせください:)

ありがとう!

4

2 に答える 2