Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

glScissor(..) zawodzi :(

Ostatnio zmodyfikowano 2012-08-18 02:12
Autor Wiadomość
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
C/C++
::glScissor( 0, h_win - GAME_SLOWKA_END /*915*/, 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...
P-62811
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ść' :)
P-62814
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()
P-62816
DejaVu
» 2012-08-18 01:08:18
http://msdn.microsoft.com/en-us/library/windows/desktop/dd368581(v=vs.85).aspx

Trochę poczytałem i... z tego co zrozumiałem to do funkcji glScissor podajesz współrzędne względem okna w którym jest osadzony OpenGL.

/edit:
Swoją drogą zacząłem się zastanawiać jak można wyciąć obszar w którym ma być modyfikowana scena :P
P-62817
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ć...
P-62818
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... ;/
P-62820
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
P-62821
DejaVu
» 2012-08-18 01:40:03
W bibliotece SFML jest metoda:
C/C++
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 :)
P-62822
« 1 » 2
  Strona 1 z 2 Następna strona