Hi,
Weiss einer wie man einen Shader(Fragment, Vertex) in ein OpenGL Projekt einbindet?
Hab schon Google gequ?lt, aber werd da nicht so ganz schlau draus...
Brauch man glut?
vielleicht hilf dir das hier weiter
http://wiki.delphigl.com/index.php/Tutorial#Shader
will auch schon die ganze Zeit mal ein wenig damit rumspielen, komme aber nicht dazu
Auf der Seite, war ich schon.
Na, nur das:
glAttachObjectARB(ProgramObject, VertexShaderObject);
glAttachObjectARB(ProgramObject, FragmentShaderObject);
gibts z.B schonmal net im OpenGL-Wrapper von GLB, sonst h?tt ichs da mal gestet...
:|
die brauchst du ja auch nicht. Das sollten die neuen SHADER-Befehle von GLBasic alles erledigen. Brauchst ja nur den Shader zu erstellen (vert und/oder frag) und zu nutzen.
Nur das du keine Parameter ?bergeben kannst.
GLB hat Max 2 Texturen, sonst muss man das im Shader fix machen.
hmm, da bin ich leicht ?berfragt. M?sstest dann wohl GL-Extensions nutzen. Aber sind die nicht Hersteller-spezifisch?
Joachim Rohde hat die Nehe-OpenGL-Tutorials ja gr??tenteils in Deutsche ?bersetzt
vielleicht hilft das weiter. Hier der Artikel f?r Multi-Texturing
http://www.joachimrohde.com/cms/xoops/modules/articles/article.php?id=30
das wenn ich schon sehe :D :
#include < windows.h> // Header Datei f?r Windows
#include < stdio.h> // Header Datei f?r Standard Input/Output
#include < gl\gl.h> // Header Datei f?r die OpenGL32 Library
#include < gl\glu.h> // Header Datei f?r die GLu32 Library
#include < gl\glaux.h> // Header Datei f?r die GLaux Library
#include "glext.h" // Header Datei f?r Multitexturing
#include < string.h> // Header Datei f?r die String Library
#include < math.h> // Header Datei f?r die Math Library
haste in GLB keine Chance
Laaaaangsam!
X_LOADSHADER -> glCreateShaderObjectArb, glShaderSourceArb, glCompileShaderArb, glGetObjectParameterivArb(GL_OBJECT_COMPILE_STATUS_ARB), glLinkProgramArb
X_SETSHADER -> glUseProgramObjectArb
X_PUTSHADER -> glGetUniformLocationArb, glUniform1fArb
Das ist _ALLES_ gewrapped!
dann schau mal in die gl.gbas :)
glCreateShaderObjectArb ... nicht anwesend
glShaderSourceArb ... hat sich auch verlaufen
glGetObjectParameterivArb(GL_OBJECT_COMPILE_STATUS_ARB) ... n??
glLinkProgramArb... auch nicht da
glUseProgramObjectArb... nix da..
glGetUniformLocationArb... weg
glUniform1fArb ... net da
hab die gl.gbas von der Startseite von hier!
Shader wurde da ausgelassen?
Oder ist das Intern vorhanden, ohne das ich das wei? o.O
Kann ich da Zugriff bekommen zu diesen Befehlen?
Das sind Extensions. Die m?sst Du extra laden. Das ist der totale Krampf. Warum nicht X_SETSHADER nutzen?
Naja so kann man ja Parameter an einen Shader "?bergeben"...
Kann X_PUTSHADER wohl auch, aber k?nnte man auch irgendwie Texturen f?r einen Shader setzen?
Oder einen Texturnamen an einen Shader .. oder so :D
Ja klar. Du gibtst Ja nur die TexturNUMMER an. Das geht mit X_PUTSHADER.
STOP. Alles zur?ck. Ich hab das vergessen zu dokumentieren.
Schau in das Vz Samples\3D\Shader
Die Datei: Multitexture.frag
// GLBasic exports 2 "uniform sampler2D" variables if
// you set X_SETTEXTURE a,b after X_SETSHADER!
uniform sampler2D TextureID1;
uniform sampler2D TextureID2;
Du setzt die Textur also mit X_SETTEXTURE und der Wert "TextureID1" und "TextureID2" sind deine Texturen.
Angenommen ich h?tte mehr als 2 Texturen? ( Heightmap je nach h?he kommt die Textur ... < 0 unterwasser, bis 100 Gras, > 100 Schnee)
Geht das dann einfach eine 3te Textur ?ber Putshader zu machen... n? oder?
Geht jetzt rein ums verst?ndnis :)
Nein, dann INLINE.