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

Aktuelle Zeit: Do Jul 03, 2025 09:47

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



Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Shader in C++
BeitragVerfasst: Di Mär 06, 2012 08:33 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
Hallo
Ich hatte damals mit Delphi eine wundervolle klasse die mir die meiste Arbeit bei der Erstellung und Initialisierung eines Shaders abgenommen hat.
Nun habe ich angefangen diese klasse nach C++ zu übertragen. Aber ich bekomme die GLhandle und GLhandleARB nicht hin, er mag das mir nicht haben. Wie bekomm ich die nun zum laufen?


Lg Dropye


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Di Mär 06, 2012 12:20 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Dropye hat geschrieben:
Aber ich bekomme die GLhandle und GLhandleARB nicht hin, er mag das mir nicht haben
Was mag das heißen? Etwa, dass der Compiler diese Datentypen nicht kennt? Dann brauchst du einen OpenGL-Header, der diese deklariert. Ich empfehle glew.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Di Mär 06, 2012 13:04 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
Mir ist gerade etwas eingefallen was ich noch probieren muss heute abend werde ich das in angriff nehmen und mich nochmal melden :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Di Mär 06, 2012 17:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
OpenGL-Handles sind einfach Unsigned-Integer, also GLuint.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Di Mär 06, 2012 18:41 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
okay jetzt bin ich wieder da :)

das mit dem GLuint ist erstmal ne gute sache, fein zu wissen :)

aber leider kann ich auf einen GLuint kein Programmobjekt legen

im internet fand ich folgenden schnipsel der das wohl beheben sollte
Code:
  1. typedef GLhandle (APIENTRYP PFNGLCREATESHADERPROC) (GLenum shaderType);


allerdings sagte er mir dass eine funktion die eine funktion zurückgibt nicht zulässig wäre

lg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Di Mär 06, 2012 19:03 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
aber leider kann ich auf einen GLuint kein Programmobjekt legen

Ich weiß nicht was du da machst, aber ich mache das immer so.
Code:
  1. GLuint prgRender = glCreateProgram();

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Di Mär 06, 2012 19:23 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
alles klar nach 5 Jahren Delphi sieht man eben die fehlenden klammern nicht :/

danke euch :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Di Mär 06, 2012 21:37 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
ich bins nochmal :)

ich bekomme wenn ich nun das ProgramObjekt setzen möchte eine Acces Violation in dieser form
Zitat:
Eine Ausnahme (erste Chance) bei 0x00000000 in ShaderTest.exe: 0xC0000005: Access violation.
Unbehandelte Ausnahme bei 0x776715de in ShaderTest.exe: 0xC0000005: Access violation.


sind shader eine extension die erst initialisiert werden muss?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Mi Mär 07, 2012 11:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Ja shader sind eine Extension. Da es aber sowieso empfehlenswert ist jede OpenGL Funktion manuell via GetProcAddress zu laden, sollte es kein so großes Problem darstellen.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Mi Mär 07, 2012 13:31 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Und genau diese Initialisierungsarbeit nimmt einen GLEW ab, ähnlich wie es der DelphiGL-Header tut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Mi Mär 07, 2012 18:33 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
okay also habe ich jetzt durch glew alles initialisiert und sollte das nutzen können

Code:
  1. bool TShader::SetUpShader()
  2. {
  3.   bool Result = false;
  4.   if(ProgramObject=glCreateProgram()!=0)
  5.       Result = true;
  6.   VertexShaderObject   = glCreateShader(GL_VERTEX_SHADER);
  7.   FragmentShaderObject = glCreateShader(GL_FRAGMENT_SHADER);
  8.   return Result;
  9. };


hier erstelle ich die Objekte für die shader, aber irgendwas in glCreateProgramm läuft nicht.

Zitat:
open.c
errno_t __cdecl _tsopen_helper ([...]
[...]
__finally {
if ( unlock_flag )
{
if (retval)
{
_osfile(*pfh) &= ~FOPEN;
}
-> _unlock_fh(*pfh);
}
}
[...]


Zitat:
Unbehandelte Ausnahme bei 0x77a315de in ShaderTest.exe: 0xC0000005: Access violation.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Mi Mär 07, 2012 19:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Code:
  1. if(ProgramObject=glCreateProgram()!=0)

Wer so was schreibt muss sich nicht wundern, wenn das nicht wie erwartet funktioniert. != hat hier die höhere Priorität....du weißt dem ProgramObject also vermutlich ein "true" zu ;)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Mi Mär 07, 2012 19:36 
Offline
DGL Member

Registriert: Sa Okt 18, 2008 11:59
Beiträge: 180
Zum einen das was Kühle Katze sagt und zum anderen ist das eine Zuweisung und eine Zuweisung gibt immer wahr zurück.

Ein Gleichheit hat in C++ zweimal das ISTGLEICH-Zeichen, sieht also wie folgt aus:
Code:
  1. ==


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Mi Mär 07, 2012 19:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
zum anderen ist das eine Zuweisung und eine Zuweisung gibt immer wahr zurück.

*hust....das Ergebnis einer Zuweisung ist der zugewiesene Wert. Was er da macht ist schon richtig, nur muss das anders geklammert werden. (oder einfach das != 0 weglassen...da die if-Anweisung für Integer und Pointer automatisch auf != 0 testet)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader in C++
BeitragVerfasst: Mi Mär 07, 2012 20:12 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
aha ja woher soll man sowas wissen :D ich werd es gleich testen :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]