Admixior Temat założony przez niniejszego użytkownika |
glScissor(..) zawodzi :( » 2012-08-18 00:28:05 Witam. Piszę sobie programik aż tu z ukrycia zaatakował mnie pewien błąd z funkcją glScissor(). A dokładnie nie robi to co ma robić. Po długim procesie debugowania poddałem się. Procesor nie potrafi odejmować :(( xd ::glScissor( 0, h_win - GAME_SLOWKA_END , 1920, GAME_SLOWKA_END - red_position ); wnd.Draw( sf::Shape::Rectangle( 0, 0, 1920, 1080, Color::Black ) );
Zmienna h_win ma wartość 1080, Game_Slowka... 915, jak się odejmie to coś tam wyjdzie, i wtedy czarny testowy prostokąt zamiast rysować się od współrzędnych 915 w górę rysuje się od ok 874 w górę. DLACZEGO??? ps. Dorzucę, że korzystam z sf::View, wątpię żeby to miało wpływ, ale... |
|
DejaVu |
» 2012-08-18 00:36:05 Utwórz lepiej pomocniczą zmienną i wstawiaj konkretną wartość do glScissor - może po prostu źle liczysz w pamięci 'ile powinno wyjść' :) |
|
Admixior Temat założony przez niniejszego użytkownika |
» 2012-08-18 00:53:58 hmm... Zmieniłem na ::glScissor( 0, 1080 - 915/*915*/ , 1920, 915-220 ); i są takie wyniki: 874 zamiast 915 i wysokość wychodzi 856 zamiast 695
Klase sf::View mam ustawioną na rozdzielczość 1920x1080 a wyświetlam w 1600x900... , i punkt centralny to domyślne centrum(1920/2,1080/2)
//edit //obawiam się że to wina View. Zmniejszyłem rozdzielczość i jest bardziej przesunięte do góry... tylko jak to teraz obliczyć??? Dlaczego im zmniejszam bardziej rozdzielczość (View musi bardziej zmniejszać) to tym jeszcze mniejsze (czy tam wyżej przesunięte) jest glScissor() |
|
DejaVu |
» 2012-08-18 01:08:18 |
|
Admixior Temat założony przez niniejszego użytkownika |
» 2012-08-18 01:10:39 Czyli na to wychodzi że muszę podać wartość bezwzględną (nie 1080 - 915 tylko 1600- ileś tam)? Od razu spytam Jeśli tak to w jaki sposób policzyć to "ileś tam"?
//Mam na myśli inny sposób niż na proporcje(jakaś funkcja która mi zwróci pozycje TransformTo...) hmm klasa RenderWindow ma ConverCoords spróbuje zastosować... |
|
DejaVu |
» 2012-08-18 01:15:24 Nie no możesz sobie odejmować zmienne - z tym nie ma problemu. Chodzi o to, że musisz podawać współrzędne względem okna. Jeżeli używasz np. SFML to tam są metody do transformowania z pozycji okna na pozycję na scenie OpenGL. Ja Ci mogę jedynie powiedzieć to co jestem w stanie wyczytać z dokumentacji - niestety nie znalazłem jeszcze czasu na to by rozwinąć swoją wiedzę dostatecznie dobrze z OpenGL-a... ;/ |
|
Admixior Temat założony przez niniejszego użytkownika |
» 2012-08-18 01:21:54 ConverCoords nie zadziała:( bo to konwertuje z globalnych do lokalnych (jest jeszcze gorzej rysuje się od połowy ekranu)
już nie mam pomysłu :(
//zrobiłem na proporcje i działa, ale robienie a proporcje jest uciążliwe, wolałbym funkcje gotową np z RenderWindow ;p |
|
DejaVu |
» 2012-08-18 01:40:03 W bibliotece SFML jest metoda:
Vector2f RenderTarget::convertCoords( const Vector2i & point, const View & view ) const
Trochę gruzu tam jest nawalonego, więc nawet nie za bardzo jest jak wkleić jak to działa no ale da się to jakoś racjonalnie policzyć skoro w SFML-u to zrobili :) |
|
« 1 » 2 |