Schwedenbitter hat geschrieben:
Ich habe das mit # 0.9.24 Beta vom 10.09.2008 (SVN-Revision: 12752) probiert und bekomme genau dieselben Fehlermeldungen:
Ähm..0.9.24? Dann müsste doch die V1.6 von opBitmap anstandslos laufen....
Schwedenbitter hat geschrieben:
Ich habe das mit # 0.9.24 Beta vom 10.09.2008 (SVN-Revision: 12752) probiert und bekomme genau dieselben Fehlermeldungen:
shokwave hat geschrieben:Schwedenbitter hat geschrieben:
Ich habe das mit # 0.9.24 Beta vom 10.09.2008 (SVN-Revision: 12752) probiert und bekomme genau dieselben Fehlermeldungen:
Ähm..0.9.24? Dann müsste doch die V1.6 von opBitmap anstandslos laufen....
Code: Alles auswählen
D:\Dokumente\XXXX\Dokumente\Lazarus\opbitmap1_7\imglibs\resample.pas(532,44) Error: Argument can't be assigned to
Code: Alles auswählen
D:\Dokumente\XXXX\Dokumente\Lazarus\opbitmap1_7\imglibs\resample.pas(536,48) Warning: Conversion between ordinals and pointers is not portable
t-z hat geschrieben:Damit ist diese Lösung vermutlich sogar schneller als mit der OPBitmap
Code: Alles auswählen
Signatur := nil;
Code: Alles auswählen
PBGRA = ^TBGRA;
TBGRA = packed record
B, G, R, A: Byte;
end;
Code: Alles auswählen
Inc(Integer(DestPixel), DestDelta);
Code: Alles auswählen
Inc((DestPixel), DestDelta);
Code: Alles auswählen
var
DC: HDC; //Handle auf Zeichenfläche
RC: HGLRC;//
Code: Alles auswählen
DC:= GetDC(Form1.Handle); // start OpenGL
if not InitOpenGL then Application.Terminate;
RC:= CreateRenderingContext(DC,[opDoubleBuffered],32,24,0,0,0,0);
ActivateRenderingContext(DC, RC); // fertig mit starten
// optional nicht im timer rendern sinder onidle ... Application.OnIdle := @IdleHandler;
glClearColor(1,1,1,0); //Hintergrundfarbe:weiß
glDisable(GL_DEPTH_TEST); //Tiefentest
glDisable(GL_CULL_FACE); //Backface Culling
glEnable (GL_BLEND); //alpha
glEnable (GL_NORMALIZE);
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); //Licht
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
glAlphaFunc ( GL_GREATER, 0.01 ) ; // 99%-100% transperente obj werden nicht in den z-buffer geschrieben
glEnable ( GL_ALPHA_TEST ) ;
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
{ licht brauchen wir nicht. ansonsten ist light_ambient ein array [0..3] of real mit werten von 0..1
glLightfv(GL_LIGHT0, GL_AMBIENT, @light_ambient[0]);
glLightfv(GL_LIGHT0, GL_DIFFUSE, @light_diffuse[0]);
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.0001);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0); }
Code: Alles auswählen
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glViewport(0, 0, Form1.ClientWidth, Form1.ClientHeight); // große = größe des fensters
glmatrixmode(GL_PROJECTION);
glloadidentity();
gluperspective(45,Form1.ClientWidth/ Form1.ClientHeight,0.001,10); // von 0.001 bis entfernung von 10
glmatrixmode(GL_MODELVIEW);
glloadidentity();
// ursprung herstellen
// das eigentliche
glbegin(GL_TRIANGLES); // ab jetzt werden dreiecke gezeichnet.
glcolor4f(random,random,random,1); // farbe rgba
glvertex3f(-1,0,-2);
glvertex3f(0,1,-2);
glvertex3f(1,0,-2);
glcolor4f(1,1,1,1);
glend; // ende mit dreiecke zeichnen.
Swapbuffers(DC); //ausgabe
Code: Alles auswählen
Signatur := nil;
Code: Alles auswählen
Inc(Integer(DestPixel), DestDelta);
Code: Alles auswählen
DestPixel:=PBGR(Integer(DestPixel)+DestDelta);
Das kann nicht Klappen, da es sich hier bei um eine Zeigeroperation handelt. Durch die Typkonvertierung soll die Adresse nur um DestDelta erhöht werden und nicht um DestDelta*AnzahlBit(TBGR).MAC hat geschrieben:ich schätze mal das man das eventuell durch DestPixel.a*256*256*256 + DestPixel.b*256*256+ DestPixel.g*256 + DestPixel.red ersetzen kann.
t-z hat geschrieben:Frage: Gibt es in OP-Bitmap auch eine Möglichkeit die Bitmap direkt auf die Canvas zu schreiben, oder muss ich über ein TBitmap gehen, wie auch beim TLazIntfImage? Spätestens dann dürfte die OP-Bitmap überlegen sein. Beim Laden der Bilder ist sie dies auf jedem Fall, da ich keine Konvertierung von TBitmap nach TLazIntfImage mehr benötige.