Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Apr 19, 2024 13:01

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Textur Nummern;
BeitragVerfasst: So Nov 02, 2014 18:21 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe folgenden Code-Auschnitt aus dglOpenGL.pas ab Zeile 1631:
Code:
  1.   // GL_VERSION_1_3
  2.   GL_TEXTURE0 = $84C0;
  3.   GL_TEXTURE1 = $84C1;
  4.   GL_TEXTURE2 = $84C2;
  5.   GL_TEXTURE3 = $84C3;
  6.   GL_TEXTURE4 = $84C4;
  7.   GL_TEXTURE5 = $84C5;
  8.   GL_TEXTURE6 = $84C6;
  9.   GL_TEXTURE7 = $84C7;
  10.   GL_TEXTURE8 = $84C8;
  11.   GL_TEXTURE9 = $84C9;


Wen ich die Nummerierung angucke, wird sie immer um eins erhöht. Ist dies in späteren Versionen auch garantiert ?

Ich würde die Nummern gerne in eine for-to Schleife verwenden.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: So Nov 02, 2014 20:49 
Offline
DGL Member

Registriert: Fr Aug 26, 2011 09:26
Beiträge: 25
Programmiersprache: FreePascal
Das ist kein Problem, z.B.:
Code:
  1.  
  2. for i := 0 to MAX_TEXTURES do
  3. begin
  4.   glActiveTexture(GL_TEXTURE0 + i);
  5.  
  6.   // irgendetwas damit tun
  7. end;
  8.  


Zuletzt geändert von d.l.i.w am Mo Nov 03, 2014 12:45, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: Mo Nov 03, 2014 09:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Nein, das solltest du unter gar keinen Umstaenden machen. Solche Sachen sind nur Namen und kein konkreter Wert oder Datentyp. Wenn du also so etwas machst, dann ignorierst du die Kapselung und somit das Verhalten des jeweiligen Moduls. Sprich das Modul ist kein Modul mehr sondern ein fester Bestandteil deiner Software (monolithische Architektur). Das wuerde aber nur gehen wenn das entsprechende Modul (opengl32.dll) von dir selbst hergestellt wird.

Wenn du meinst das die For-Schleife dein Programm verbessert, solltest du vorher ein Array mit den entsprechenden Werten von GL_TEXTURE0-N aufbauen.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: Mo Nov 03, 2014 10:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn es im Standard festgeschrieben wäre, dass GL_TEXTUREn fortlaufend sind (und afaik ist das der fall, sonst könnte man mehr als 8 Texturunits nicht addressieren, und der Standard erlaubt dies afaik), dann ist das kein Problem. Dann bindest du dich lediglich an das Modul OpenGL-Standard, und das tust du schon, indem du glActiveTexture aufrufst.

viele Grüße,
Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: Mo Nov 03, 2014 12:00 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Doku lesen: https://www.opengl.org/sdk/docs/man/doc ... exture.xml

Zitat:
texture must be one of GL_TEXTUREi, where i ranges from zero to the value of GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS minus one. The initial value is GL_TEXTURE0.


D.h. darfst du eine Schleife von GL_TEXTURE0 + i ; i < GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS machen, es ist schließlich so vorgesehen.

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: Mo Nov 03, 2014 12:44 
Offline
DGL Member

Registriert: Fr Aug 26, 2011 09:26
Beiträge: 25
Programmiersprache: FreePascal
Zitat:
The number of texture units is implementation dependent, but must be at least 80


Ich habe bisher keinen Header gesehen, der tatsächlich alle GL_TEXTURE0 bis GL_TEXTURE80 definiert, zumal abhängig von der Grafikkarte viel mehr Texturen möglich sind (momentan bis zu 192) :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: Mo Nov 03, 2014 18:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Lord Horazont hat geschrieben:
Wenn es im Standard festgeschrieben wäre, dass GL_TEXTUREn fortlaufend sind (und afaik ist das der fall, sonst könnte man mehr als 8 Texturunits nicht addressieren, und der Standard erlaubt dies afaik), dann ist das kein Problem. Dann bindest du dich lediglich an das Modul OpenGL-Standard, und das tust du schon, indem du glActiveTexture aufrufst.

viele Grüße,
Horazont


Also ich weiß das es für ES ab 1.1 tatsächlich mit GL_TEXTUREi = GL_TEXTURE0+i definiert ist. Aber für die anderen Versionen habe ich das noch nie richtig fest gelesen.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: Mo Nov 03, 2014 18:39 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Dieser Befehl spuckt bei mir 96 raus.
Code:
  1. glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS ,@units);
  2. ShowMessage(IntToStr(units));

Wen ich es richtig verstehe könnte ich Multitexturing mit 96 Texturen machen ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: Mo Nov 03, 2014 19:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
mathias hat geschrieben:
Dieser Befehl spuckt bei mir 96 raus.
Code:
  1. glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS ,@units);
  2. ShowMessage(IntToStr(units));

Wen ich es richtig verstehe könnte ich Multitexturing mit 96 Texturen machen ?


GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS bezieht sich auf die Anzahl der gleichzeitig in Shadern nutzbaren Texturen. In der festen Funktionspipeline ist die Zahl weitaus niedriger (via GL_MAX_TEXTURE_UNITS).

Also rein theoretisch ja, dann aber halt über einen Shader.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Textur Nummern;
BeitragVerfasst: Di Nov 25, 2014 12:34 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Habe die sampler2D-Diskussion auf Wunsch eines Users abgespalten.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 47 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 4.214s | 18 Queries | GZIP : On ]