[ot] OpenGL a glViewport [i dlugie]

Forum poświęcone programowaniu w Delphi

[ot] OpenGL a glViewport [i dlugie]

Postprzez m_m_b8 » 9 mar 2011, o 13:55

Kawałek kodu, z OpenGL interesuje mnie tylko 2D.

// definiuje glViewport
glViewport( 100,100,200,200); //
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluOrtho2D(0,200,200,0); // ustawiam współrzędne lewa prawa gora dół
// (0,0) (200,0)
// (0,200) (200,200)
glMatrixMode(GL_MODELVIEW);

// rysuje linie
// od środka obszaru glViewport gdzieś poza tenże obszar
glLineWidth(5);
glBegin(GL_LINES);
glVertex2f(100, 100);
glVertex2f(-100, -100);
glEnd();

glEnable(GL_TEXTURE_2D); // Enable Texture Mapping

//rysuje prostokont z tekstura
glBegin(GL_QUAD_STRIP);
glTexCoord2f(0,0);
glVertex2f(-100,0); //glVertex2f(x1 ,y1);
glTexCoord2f(1,0);
glVertex2f(100,0);
glTexCoord2f(0,1);
glVertex2f(-100,100); //glVertex2f(x1 ,y1);
glTexCoord2f(1,1);
glVertex2f(100,100);
glEnd();



Ten sam EXE ale na różnych komputerach wygląda inaczej :(
Na GMA500 prostokat wychodzi poza obszar który powinien go ograniczać.


Definiując glViewport miałem nadzieje że to co wypadnie poza glViewport
nie będzie widoczne. A tutaj niespodzianka

Na karcie NV9800:
-- LINIA nie jest widoczny poza obszar glViewport czyli OK
-- prostokąt z teksturą nie jest widoczny poza obszarem glViewport czyli OK

Na karcie GMA 500:
-- LINIA jest rysowania poprawnie i nie jest rysowana poza obszarem
glViewport
-- prostokąt z tekstura rysowany jest poza obszarem glViewport czyli NOT
OK :(
czyli prostokąt zaczyna się od -100 do 100 choć powinien ograniczyć
widoczność tylko od 0 do 100.

Problem dotyczy tylko GL_QUAD_STRIP , bo linie są ograniczane prawidłowo.

Nie widzę żadnego przełącznika glEnable, glDisable który miałby wpływ
glViewport. Czy rózne karty graficzne mają różne parametry domyślnie ?


Ewentualnie jak ograniczyć obszar w jakim prostokąty GL_QUAD_STRIP mają
być rysowane ? Jakaś alternatywna metoda ? Tak aby nie zmieniać pozycji
wierzchołków, tylko ustawić obszar w jakim maja być widoczne.



Przepraszam za nadmierne eksploatowanie grupy :)

M
m_m_b8
 
Posty: 3
Dołączył(a): 14 cze 2012, o 15:52

Re: [ot] OpenGL a glViewport [i dlugie]

Postprzez arivald » 9 mar 2011, o 14:34

W dniu 2011-03-09 14:55, m pisze:
Kawałek kodu, z OpenGL interesuje mnie tylko 2D.

// definiuje glViewport
glViewport( 100,100,200,200); //
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluOrtho2D(0,200,200,0); // ustawiam współrzędne lewa prawa gora dół
// (0,0) (200,0)
// (0,200) (200,200)
glMatrixMode(GL_MODELVIEW);

// rysuje linie
// od środka obszaru glViewport gdzieś poza tenże obszar
glLineWidth(5);
glBegin(GL_LINES);
glVertex2f(100, 100);
glVertex2f(-100, -100);
glEnd();

glEnable(GL_TEXTURE_2D); // Enable Texture Mapping

//rysuje prostokont z tekstura
glBegin(GL_QUAD_STRIP);
glTexCoord2f(0,0);
glVertex2f(-100,0); //glVertex2f(x1 ,y1);
glTexCoord2f(1,0);
glVertex2f(100,0);
glTexCoord2f(0,1);
glVertex2f(-100,100); //glVertex2f(x1 ,y1);
glTexCoord2f(1,1);
glVertex2f(100,100);
glEnd();



Ten sam EXE ale na różnych komputerach wygląda inaczej :(
Na GMA500 prostokat wychodzi poza obszar który powinien go ograniczać.


Definiując glViewport miałem nadzieje że to co wypadnie poza glViewport
nie będzie widoczne. A tutaj niespodzianka

Na karcie NV9800:
-- LINIA nie jest widoczny poza obszar glViewport czyli OK
-- prostokąt z teksturą nie jest widoczny poza obszarem glViewport czyli OK

Na karcie GMA 500:
-- LINIA jest rysowania poprawnie i nie jest rysowana poza obszarem
glViewport
-- prostokąt z tekstura rysowany jest poza obszarem glViewport czyli NOT
OK :(
czyli prostokąt zaczyna się od -100 do 100 choć powinien ograniczyć
widoczność tylko od 0 do 100.

Problem dotyczy tylko GL_QUAD_STRIP , bo linie są ograniczane prawidłowo.

Nie widzę żadnego przełącznika glEnable, glDisable który miałby wpływ
glViewport. Czy rózne karty graficzne mają różne parametry domyślnie ?


[cytat
url=http://www.opengl.org/resources/features/KilgardTechniques/oglpitfall/]

10. The Viewport Does Not Clip or Scissor

It is a very common misconception that pixels cannot be rendered outside
the OpenGL viewport. The viewport is often mistaken for a type of
scissor. In fact, the viewport simply defines a transformation from
normalized device coordinates (that is, post-projection matrix
coordinates with the perspective divide applied) to window coordinates.
The OpenGL specification makes no mention of clipping or culling when
describing the operation of OpenGL's viewport.

[/cytat]
Arivald
arivald
 
Posty: 1298
Dołączył(a): 14 cze 2012, o 15:15

Re: [ot] OpenGL a glViewport [i dlugie]

Postprzez m_m_de » 9 mar 2011, o 21:26

[cytat
url=http://www.opengl.org/resources/features/KilgardTechniques/oglpitfall/]

10. The Viewport Does Not Clip or Scissor

It is a very common misconception that pixels cannot be rendered outside
the OpenGL viewport. The viewport is often mistaken for a type of
scissor. In fact, the viewport simply defines a transformation from
normalized device coordinates (that is, post-projection matrix
coordinates with the perspective divide applied) to window coordinates.
The OpenGL specification makes no mention of clipping or culling when
describing the operation of OpenGL's viewport.

[/cytat]


I wszystko jasne
Dziękuję

M
m_m_de
 
Posty: 3
Dołączył(a): 14 cze 2012, o 15:52


Powrót do Delphi

 


  • Powiązane tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości

cron