[SFML OpenGL] Dlaczego nie wyswietla gwiazd.
Ostatnio zmodyfikowano 2025-08-25 17:16
wojownik266 Temat założony przez niniejszego użytkownika |
[SFML OpenGL] Dlaczego nie wyswietla gwiazd. » 2025-08-25 10:55:31 Dlaczego poniższy program nie wyświetla gwiazd? Proszę o korektę. #include <SFML/Graphics.hpp> #include <SFML/OpenGL.hpp> #include <GL/gl.h> #include <vector> #include <cstdlib> #include <ctime>
struct Star { float x, y; float size; };
int main() { std::srand( static_cast < unsigned int >( std::time( nullptr ) ) ); sf::RenderWindow window( sf::VideoMode( { 800, 600 } ), "Gwiazdy z GL_POINTS" ); window.setFramerateLimit( 60 ); const int starCount = 100; std::vector < Star > stars; for( int i = 0; i < starCount; ++i ) { stars.push_back( { static_cast < float >( std::rand() % 800 ), static_cast < float >( std::rand() % 600 ), static_cast < float >(( std::rand() % 3 ) + 1 ) } ); } while( window.isOpen() ) { while( const std::optional event = window.pollEvent() ) { if( event->is < sf::Event::Closed >() ) window.close(); } glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glLoadIdentity(); glPointSize( 5.0f ); glBegin( GL_POINTS ); glColor3f( 1.0f, 0.0f, 0.0f ); for( const auto & star: stars ) { glVertex2f( star.x, star.y ); } glEnd(); window.display(); } return EXIT_SUCCESS; }
|
|
tBane |
» 2025-08-25 11:52:03 OpenGL przyjmuje wartości float z zakresu [-1;1]. Wystarczy znormalizować pozycje względem okna glBegin( GL_POINTS ); glColor3f( 1.0f, 0.0f, 0.0f ); for( const auto & star: stars ) { glVertex2f( star.x / 800.0f, star.y / 600.0f ); } glEnd();
|
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2025-08-25 12:24:01 Program działa tak jak dokładnie chciałem.... Dziękuję! |
|
« 1 » |