OpenGL und Rectangle Texture
-
Hallo,
ich bin mir nicht sicher ob rechteckige Texturen das richtige ist, daher eine kleine Einführung.
Ich berechne mittels OpenCL ein 2D Bild. Als Buffer würde ich gerne ein OpenGL Element verwenden. Da dachte ich an eine Texture. Im Ausgabefenster würde ich also ein 2D Rechteck zeichnen und die Texture darauf legen.
So, jetzt ist das Ausgabefenster meist nicht quadratisch und 2^n groß.Ich brauche kein Mipmapping & Co.Ist es nun vernünftiger,
- eine Texture der Größe 2^n zu erstellen und diese nur zum Teil nutzen
- eine rechteckige Texture zu erstellen (unterstützen das alle Grafik-Device seit anno 2008? Auch onBoard Chipsätze?)
- gibt es einen anderen Buffer denn man zur Darstellung nutzen kann?Gruß, Thomas
-
Es gibt GL_ARB_texture_rectangle. Das ist im prinzip was du suchst. Ich würde aber eher einfach nur den Teil nutzen der auch benötigt wird und die U/V Coords entsprechend berechnen. Das ist portabler.
Ein anderer Puffer fällt mir nicht ein.
Und um das noch portabler und forward comptatible zu machen, zeichne kein GL_QUAD sondern eben ein Rechteck mit GL_TRIANGLE_STRIP oder 2 Polys mit GL_POLYGON.
-
Ich denke du kannst ruhig mit rechteckigen Texturen arbeiten, mir ist keine Hardware bekannt die OpenCL unterstützt aber keine rechteckigen Texturen (D3D10 setzt Support für rechteckige Texturen voraus)...
-
dot schrieb:
Ich denke du kannst ruhig mit rechteckigen Texturen arbeiten, mir ist keine Hardware bekannt die OpenCL unterstützt aber keine rechteckigen Texturen (D3D10 setzt Support für rechteckige Texturen voraus)...
Mir persönlich ist auch keine Grafikkarte bekannt, die nicht mit rechteckige Texturen umgehen kann. Aber wie sieht es mit einer OpenCL CPU Platform + Onboard Grafikchipsatz aus? Unterstützen die das auch?
-
Scorcher24 schrieb:
... Das ist portabler.
Danke. Das freut mich
Nur Schade um den Speicher, wenn z.B. ein Seitenverhältnis von 2:1 auftritt.
Scorcher24 schrieb:
Und um das noch portabler und forward comptatible zu machen, zeichne kein GL_QUAD sondern eben ein Rechteck mit GL_TRIANGLE_STRIP oder 2 Polys mit GL_POLYGON.
Was ist an GL_QUAD so schlecht? Ich zeichne doch nur vier Punkte == ein Quad?
OpenCL/OpenGL interop. setzt mindestens OpenGL 1.5 voraus. Kann es trotzdem zu Problemen kommen?Könntest du das etwas genauer erläutern?
-
Siassei schrieb:
Mir persönlich ist auch keine Grafikkarte bekannt, die nicht mit rechteckige Texturen umgehen kann. Aber wie sieht es mit einer OpenCL CPU Platform + Onboard Grafikchipsatz aus? Unterstützen die das auch?
Wohl nicht notwendigerweise alle. Bei Hardware < D3D10 wär ich vorsichtig, die unterstützen rechteckige Texturen evtl. nur bedingt und so, außerdem sind die OpenGL Treiber gerade von so Chipsätzen nicht unbedingt das Gelbe vom Ei (Intel beispielsweise ist bzw. zumindest war bekannt für seinen furchtbaren OpenGL Support). Im Zweifelsfall eben abfragen ob die erwähnte Extension verfügbar ist...
-
Siassei schrieb:
Scorcher24 schrieb:
... Das ist portabler.
Danke. Das freut mich
Nur Schade um den Speicher, wenn z.B. ein Seitenverhältnis von 2:1 auftritt.
Scorcher24 schrieb:
Und um das noch portabler und forward comptatible zu machen, zeichne kein GL_QUAD sondern eben ein Rechteck mit GL_TRIANGLE_STRIP oder 2 Polys mit GL_POLYGON.
Was ist an GL_QUAD so schlecht? Ich zeichne doch nur vier Punkte == ein Quad?
OpenCL/OpenGL interop. setzt mindestens OpenGL 1.5 voraus. Kann es trotzdem zu Problemen kommen?Könntest du das etwas genauer erläutern?
GL_QUAD ist deprecated in OpenGL 3.x +.
GL_QUAD würde dich auf OpenGL 2.x und früher binden.
Hardware die nur OpenGL 2.x und früher implementieren, ist nicht fähig NPOT Texturen zu verwenden in den meisten fällen.
http://www.opengl.org/wiki/NPOT_Texture
-
Ich muss gestehen mir war nicht bewusst dass es zwei verschiedene Extensions für "rechteckige" Texturen gibt. Ich meinte damit natürlich immer NPOT Texturen...
-
Scorcher24 schrieb:
Siassei schrieb:
Scorcher24 schrieb:
Und um das noch portabler und forward comptatible zu machen, zeichne kein GL_QUAD sondern eben ein Rechteck mit GL_TRIANGLE_STRIP oder 2 Polys mit GL_POLYGON.
GL_QUAD ist deprecated in OpenGL 3.x +.
Habe die akt. Specification von OpenGL 4.1 July 25, 2010 gelesen. Ein Auszug aus Seite 417 , Kapitel E.2. DEPRECATED AND REMOVED FEATURES
Quadrilateral and polygon primitives - vertex array drawing modes
POLYGON, QUADS, and QUAD_STRIP, related descriptions of rasterization
of non-triangle polygons, and all associated state.Da bleibt dann nicht mehr viel. Schade, aber aufräumen muss wohl sein