Hallo,
ich habe ein Problem mit
OpenGL.
Als Basis für meine Demoanwendung habe ich folgenden Code genommen:
http://escargot.la.coocan.jp/SimpleS...OpenGL_FMX.pas
Das geht soweit unter OSX, als auch Windows ohne probleme. Nun wollte ich anstelle der Farbe eine Textur verwenden.
Im Prinzip macht man da ja so etwas:
Delphi-Quellcode:
var
id: GLUint;
width, height: integer;
//größe der Textur
pData: pointer;
//Zeiger auf die Textur width*height*4 (für rgb)
...
glGenTextures(1, @id);
glBindTexture(GL_TEXTURE_2D, id);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, pData);
Leider kennt die
OpenGL Übersetzung von Embarcadero glGenTextures und glBindTexture nicht, bzw. unter OSX wird gluBuild2DMipmaps nicht erkannt.
procedure glGenTextures(n: GLsizei; textures: PGLuint);
{$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl;
{$ENDIF} external opengl32;
procedure glBindTexture(target: GLEnum; Texture: GLuint);
{$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl;
{$ENDIF} external opengl32;
Da die Funktionen fehlen habe ich oben stehende Notlösung eingebaut. Hat jemand eine Idee warum das nicht geht? Textures ist 0 und das bedeutet es gibt irgendwo ein Fehler
Peter
PS:
OpenGL ist natürlich zu dem Zeipunkt wo ich die Textur erstellen will schon initialisiert.