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

Aktuelle Zeit: Di Jul 08, 2025 19:00

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem beim intialisieren
BeitragVerfasst: Di Mär 16, 2004 09:51 
Offline
DGL Member

Registriert: Mo Mär 15, 2004 17:02
Beiträge: 14
Hallo,
ich habe folgende procedure um die Einstellungen von OpenGl zu ändern
und OpenGl zu intialisieren.

Zitat:
procedure TForm1.SetupPixelFormat;
var hHeap: THandle;
nColors, i: Integer;
lpPalette : PLogPalette;
byRedMask, byGreenMask, byBlueMask: Byte;
nPixelFormat: Integer;
pfd: TPixelFormatDescriptor;
begin
FillChar(pfd, SizeOf(pfd), 0);
with pfd do begin
nSize := sizeof(pfd); // Länge der pfd-Struktur
nVersion := 1; // Version
dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or
PFD_DOUBLEBUFFER; // Flags
iPixelType:= PFD_TYPE_RGBA; // RGBA Pixel Type
cColorBits:= 24; // 24-bit color
cDepthBits:= 32; // 32-bit depth buffer
iLayerType:= PFD_MAIN_PLANE; // Layer Type
end;
nPixelFormat:= ChoosePixelFormat(myDC, @pfd);
SetPixelFormat(myDC, nPixelFormat, @pfd);
// Farbpalettenoptimierung wenn erforderlich
DescribePixelFormat(myDC, nPixelFormat,sizeof(TPixelFormatDescriptor),pfd);
if ((pfd.dwFlags and PFD_NEED_PALETTE) <> 0) then begin
nColors := 1 shl pfd.cColorBits;
hHeap := GetProcessHeap;
lpPalette:= HeapAlloc
(hHeap,0,sizeof(TLogPalette)+(nColors*sizeof(TPaletteEntry)));
lpPalette^.palVersion := $300;
lpPalette^.palNumEntries := nColors;
byRedMask := (1 shl pfd.cRedBits) - 1;
byGreenMask:= (1 shl pfd.cGreenBits) - 1;
byBlueMask := (1 shl pfd.cBlueBits) - 1;
for i := 0 to nColors - 1 do begin
lpPalette^.palPalEntry.peRed :=
(((i shr pfd.cRedShift) and byRedMask) *255)DIV byRedMask;
lpPalette^.palPalEntry[i].peGreen:=
(((i shr pfd.cGreenShift)and byGreenMask)*255)DIV byGreenMask;
lpPalette^.palPalEntry[i].peBlue :=
(((i shr pfd.cBlueShift) and byBlueMask) *255)DIV byBlueMask;
lpPalette^.palPalEntry[i].peFlags:= 0;
end;
myPalette:= CreatePalette(lpPalette^);
HeapFree(hHeap, 0, lpPalette);
if (myPalette <> 0) then begin
SelectPalette(myDC, myPalette, False);
RealizePalette(myDC);
end;
end;
end;


Bei folgender Zeile wird eine Fehlermeldung angezeigt.
Zitat:
[i]Zeile
DescribePixelFormat(myDC, nPixelFormat,sizeof(TPixelFormatDescriptor),pfd);

Fehler
Inkompatible Typen: "'TPixelFormatDescriptor' und 'PPixelFormatDescriptor'


Wie darf ich das jetzt verstehen und was muss ich machen
um den Fehler zu beheben?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 10:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
DescribePixelFormat erwartet einen Zeiger auf deinen TPixelFormatDescriptor, also statt einfach
Code:
  1. DescribePixelFormat(myDC, nPixelFormat,sizeof(TPixelFormatDescriptor),pfd);

musst du folgendermaßen einen Zeiger auf pfd übergeben :
Code:
  1. DescribePixelFormat(myDC, nPixelFormat,sizeof(TPixelFormatDescriptor), @pfd);

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 10:39 
Offline
DGL Member

Registriert: Mo Mär 15, 2004 17:02
Beiträge: 14
Danke, das klappt schonmal. Nun kommt ein Error Dialog
beim ausführen der Exe.

Zitat:
Im Projekt 'Open.exe' ist eine Exception der Klasse EAccess aufgetreten.
Meldung:'Zugrifs verletzung bei Adresse 00000000'. Prozeß wurde angehalten. Fortfahren mit Einzelschritt oder Start.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 10:54 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Ich habe Delphi6 und das Programm ließ sich kompilieren und initialisierte auch richtig, nachdem ich den Parameter bei DescribePixelFormat wieder zurückgestellt habe. Vielleicht liegt es an der Version der windows.pas.
Code:
  1.   DescribePixelFormat(myDC, nPixelFormat,sizeof(TPixelFormatDescriptor),pfd);

Die fertige Exe Datei erzeugte allerdings auch bei mir den Fehler. Daher vermute ich das das an den alten Headern liegt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 11:05 
Offline
DGL Member

Registriert: Mo Mär 15, 2004 17:02
Beiträge: 14
Muss ich wohl doch ne neuere Delphi Version kaufen. :roll:


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 23 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.008s | 16 Queries | GZIP : On ]