Toon posts:

[openGL] color buffer operaties

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil pixel operaties uitvoeren op een beeld in openGL (bepaalde pixels zwart maken meer bepaald). Met glReadPixels() kan men een beeld opslaan als een array als volgt:

C++:
1
2
float *fColorBuffer = new float[m_iScreenWidth*m_iScreenHeight*3];
glReadPixels(0, 0, m_iScreenWidth, m_iScreenHeight, GL_RGB, GL_FLOAT, fColorBuffer);


Hierna pas ik fColorBuffer aan en dan wil ik deze array gebruiken om de huidige color buffer weer te overschrijven. Mijn vraag is nu, gaat dit in openGL? Het enige wat ik kan doen met deze array is gebruiken als een 2D image die ik ergens in mijn scene kan plakken. Dit doe ik dan ook. Ik plak als het ware deze image over mijn hele scene heen. Maar ik vind dit een beetje omslachtig:

C++:
1
2
glRasterPos3f(wx,wy,wz);
glDrawPixels(m_iScreenWidth, m_iScreenHeight, GL_RGB, GL_FLOAT, fColorBuffer);


Iemand een idee?
Informatie over de kleurbuffer en over pixel operaties.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Iemand een idee?
Wat wil je nou precies? Werkt het niet goed? Of werkt het inefficient?
En definieer "bepaalde pixels zwart maken". Kun je niet gewoon een zwarte polygoon over het gebied renderen dat je zwart wil hebben? Of gooi anders een masker in de stencilbuffer en gebruik een stenciltest tijdens het renderen.

[ Voor 55% gewijzigd door .oisyn op 17-02-2005 14:12 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op donderdag 17 februari 2005 @ 14:11:
[...]


Wat wil je nou precies? Werkt het niet goed? Of werkt het inefficient?
Het werkt niet zoals ik het wil. Ik teken een 2D image over mijn scene. Als ik dan daarna nog aanpassingen zou willen doen aan de scene, dan zie je daar niks van, want dat zit achter die 2D image.
En definieer "bepaalde pixels zwart maken". Kun je niet gewoon een zwarte polygoon over het gebied renderen dat je zwart wil hebben?
Ik vergelijk waardes uit de dieptebuffer. Als er een groot verschil in waardes tussen 2 aangrenzende pixles in de dieptebuffer zit, dan wil ik die pixels zwart maken.
Of gooi anders een masker in de stencilbuffer en gebruik een stenciltest tijdens het renderen.
Daar heb ik ook over nagedacht. De buffer vullen met 0-en en een 1 zetten waar ik een pixel zwart wil hebben. Daarna de scene renderen waar de stencil buffer 0 is en anders een zwart vlak renderen. Maar daar heb ik nog niet zoveel ervaring mee. Het leek me gemakkelijker als ik gewoon de color buffer kon aanpassen en weer opslaan.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het leek me gemakkelijker als ik gewoon de color buffer kon aanpassen en weer opslaan.
OpenGL laat dat niet toe, wat op zich ook logisch is want je weet nooit wat voor optimalisaties de hardware uit kan halen met de backbuffer. Beter doe je dit soort dingen niet direct op de buffer en doe je het adhv textures en polygons.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op donderdag 17 februari 2005 @ 14:47:
[...]


OpenGL laat dat niet toe ...
Ik had al zo een vermoeden. Maar vond het nergens zwart op wit. Bedankt voor de hulp / tips.

edit: ga het proberen met de stencil buffer. Moet lukken.

[ Voor 11% gewijzigd door Verwijderd op 17-02-2005 14:51 ]