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

Aktuelle Zeit: Di Jul 15, 2025 04:22

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2003 00:01 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich verzweifel grade...
Ich möchte einen Screenshot vom PBuffer machen, aber irgendwas klappt da nich:

<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>procedure</span> TTextur.CopyTexture;
<span class='reserved'>const</span>
 WGL_COLOR_BITS_ARB = $2014;
 WGL_DEPTH_BITS_ARB = $2022;
 ATTRIBS: <span class='reserved'>Array</span>[<span class='integer'>0</span>..<span class='integer'>4</span>] <span class='reserved'>of</span> Integer = (WGL_COLOR_BITS_ARB,<span class='integer'>32</span>,WGL_DEPTH_BITS_ARB,<span class='integer'>24</span>,<span class='integer'>0</span>);
<span class='reserved'>var</span>
 WGLExtensions: <span class='reserved'>String</span>;
 wglGetExtensionsStringARB: <span class='reserved'>function</span>(hDC: HDC): PChar; stdcall;
 wglChoosePixelFormatARB: <span class='reserved'>function</span>(hDC: HDC; <span class='reserved'>const</span> piAttribIList: PGLint; <span class='reserved'>const</span> pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): Boolean; stdcall;
 wglCreatePbufferARB: <span class='reserved'>function</span>(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; <span class='reserved'>const</span> piAttribList: PGLint): THandle; stdcall;
 wglGetPbufferDCARB: <span class='reserved'>function</span>(hPbuffer: THandle): HDC; stdcall;
 wglReleasePbufferDCARB: <span class='reserved'>function</span>(hPbuffer: THandle; hDC: HDC): GLint; stdcall;
 wglDestroyPbufferARB: <span class='reserved'>function</span>(hPbuffer: THandle): Boolean; stdcall;
 Formats: <span class='reserved'>Array</span>[<span class='integer'>0</span>..<span class='integer'>63</span>] <span class='reserved'>of</span> Integer;
 NumFormats: Integer;
 DC: hDC;
 RC: HGLRC;
 OldRC: HGLRC;
 OldDC: HDC;
 Buf: THandle;
<span class='reserved'>begin</span>
 OldRC:=wglGetCurrentContext;
 OldDC:=wglGetCurrentDC;
 wglGetExtensionsStringARB:=wglGetProcAddress('wglGetExtensionsStringARB');
 <span class='reserved'>if</span> <span class='reserved'>not</span> Assigned(wglGetExtensionsStringARB) <span class='reserved'>then</span> Exit;
 WGLExtensions:=wglGetExtensionsStringARB(wglGetCurrentDC);
 <span class='reserved'>if</span> Pos('WGL_ARB_pixel_format',WGLExtensions)=<span class='integer'>0</span> <span class='reserved'>then</span> Exit;
 wglChoosePixelFormatARB:=wglGetProcAddress('wglChoosePixelFormatARB');
 <span class='reserved'>if</span> Pos('WGL_ARB_pbuffer',WGLExtensions)=<span class='integer'>0</span> <span class='reserved'>then</span> Exit;
 wglCreatePbufferARB:=wglGetProcAddress('wglCreatePbufferARB');
 wglGetPbufferDCARB:=wglGetProcAddress('wglGetPbufferDCARB');
 wglChoosePixelFormatARB(wglGetCurrentDC,@ATTRIBS,<span class='reserved'>nil</span>,<span class='integer'>64</span>,@Formats,@NumFormats);
 Buf:=wglCreatePbufferARB(wglGetCurrentDC,Formats[<span class='integer'>0</span>],Width,Height,<span class='reserved'>nil</span>);
 DC:=wglGetPbufferDCARB(Buf);
 RC:=wglCreateContext(DC);
 wglMakeCurrent(DC,RC);
 glClearColor(<span class='integer'>0</span>,<span class='integer'>0</span>,<span class='integer'>0</span>,<span class='integer'>0</span>);
 wglShareLists(OldRC,RC); //Hier denke ich liegt der fehler...

 wglMakeCurrent(DC,RC);
 ActivateRenderingContext(DC,RC);
 glClear(GL_COLOR_BUFFER_BIT <span class='reserved'>or</span> GL_DEPTH_BUFFER_BIT);
 glLoadIdentity;
 Bind; //Textur
 glBegin(GL_QUADS);
   glTexCoord2f(<span class='integer'>1</span>,<span class='integer'>1</span>); glVertex3f(Width,<span class='integer'>0</span>,<span class='integer'>0</span>);
   glTexCoord2f(<span class='integer'>0</span>,<span class='integer'>1</span>); glVertex3f(<span class='integer'>0</span>,<span class='integer'>0</span>,<span class='integer'>0</span>);
   glTexCoord2f(<span class='integer'>0</span>,<span class='integer'>0</span>); glVertex3f(<span class='integer'>0</span>,Height,<span class='integer'>0</span>);
   glTexCoord2f(<span class='integer'>1</span>,<span class='integer'>0</span>); glVertex3f(Width,Height,<span class='integer'>0</span>);
 glEnd;
 ColorDepth:=<span class='integer'>32</span>;
 FreeMem(RGBQuad);
 RGBQuad:=<span class='reserved'>nil</span>;
 GetMem(RGBQuad,Width*Height*<span class='integer'>4</span>);
 glFinish;
 glPixelStorei(GL_PACK_ALIGNMENT,<span class='integer'>4</span>);
 glPixelStorei(GL_PACK_ROW_LENGTH,<span class='integer'>0</span>);
 glPixelStorei(GL_PACK_SKIP_ROWS,<span class='integer'>0</span>);
 glPixelStorei(GL_PACK_SKIP_PIXELS,<span class='integer'>0</span>);
 glReadPixels(<span class='integer'>0</span>,<span class='integer'>0</span>,Width,Height,GL_RGBA,GL_UNSIGNED_BYTE,RGBQuad);
 wglReleasePbufferDCARB:=wglGetProcAddress('wglReleasePbufferDCARB');
 wglDestroyPbufferARB:=wglGetProcAddress('wglDestroyPbufferARB');
 <span class='reserved'>if</span> Buf<>0 <span class='reserved'>then</span> <span class='reserved'>begin</span>
   wglDeleteContext(RC);
   wglReleasePbufferDCARB(Buf,DC);
   wglDestroyPbufferARB(Buf);
 <span class='reserved'>end</span>;
 DeactivateRenderingContext;
 wglMakeCurrent(OldDC,OldRC);
 ActivateRenderingContext(OldDC,OldRC);
<span class='reserved'>end</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

Wenn ich dann eine Textur anhand vom RGBQuad erstelle, kommt irgendwas total komisches bei raus... :(
Es ist auch egal was ich davor für einen RC mit ActivateRenderingContext festlege... es ist immer dasselbe.. *seufzt*

Hilfe..

Au'revoir,
Aya~

PS: RGBQuad schaut so aus:
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>  PGLRGBQuad = ^TGLRGBQuad;
 TGLRGBQuad = <span class='reserved'>Packed</span> <span class='reserved'>Record</span>
   R, G, B: Byte;
   Alpha: Byte;
 <span class='reserved'>end</span>;
<span class='reserved'>var</span>
 RGBQuad: PGLRGBQuad;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2003 09:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich hab den Quellcode jetzt nur mal schnell überflogen (die Formatierung ist aufgrund des CODE-Tags leider auf der Strecke geblieben), aber ich bin mir fast sicher das dein Fehler beim Erstellen des PBuffers liegt...haste dir mal das ATI-Dokument zu dem Thema angesehen?

Denn du willst deinen PBuffer so erstellen :
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>Buf:=wglCreatePbufferARB(wglGetCurrentDC,Formats[<span class='integer'>0</span>],Width,Height,<span class='reserved'>nil</span>);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
Allerdings gibtst du da ja gar keine Parameter an (letzter Parameter = nil), weshalb dein PBuffer wohl niemals erstellt wird...

Schau dir mal das von mir angehängte ATI-Dokument durch.Dort gibts den kompletten Quellcode um nen PBuffer zu erstellen, und dort wirste auch sehen das du zwei Attributlisten (und nicht nur eine) zum Erstellen desselben benötigtst!

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2003 13:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

hab mir das PDF mal angeguckt und alles so gemacht wie es da stand... aber jetzt wird der PBuffer nichmehr korrekt erstellt..

<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>procedure</span> TTextur.CopyTexture;
<span class='reserved'>type</span>
HPBufferARB = UInt;
<span class='reserved'>const</span>
WGL_COLOR_BITS_ARB = $2014;
WGL_DEPTH_BITS_ARB = $2022;
WGL_TEXTURE_FORMAT_ARB = $2072;
WGL_TEXTURE_RGBA_ARB = $2076;
WGL_TEXTURE_TARGET_ARB = $2073;
WGL_TEXTURE_2D_ARB = $207A;
WGL_SUPPORT_OPENGL_ARB = $2010;
WGL_DRAW_TO_PBUFFER_ARB = $202D;
WGL_BIND_TO_TEXTURE_RGBA_ARB = $2071;
WGL_RED_BITS_ARB = $2015;
WGL_GREEN_BITS_ARB = $2017;
WGL_BLUE_BITS_ARB = $2019;
WGL_ALPHA_BITS_ARB = $201B;
WGL_DOUBLE_BUFFER_ARB = $2011;
attr: <span class='reserved'>Array</span>[<span class='integer'>0</span>..<span class='integer'>18</span>] <span class='reserved'>of</span> Integer = (WGL_SUPPORT_OPENGL_ARB,GL_TRUE,WGL_DRAW_TO_PBUFFER_ARB,GL_TRUE,
WGL_BIND_TO_TEXTURE_RGBA_ARB,GL_TRUE,WGL_RED_BITS_ARB,<span class='integer'>8</span>,WGL_GREEN_BITS_ARB,<span class='integer'>8</span>,WGL_BLUE_BITS_ARB,<span class='integer'>8</span>,
WGL_ALPHA_BITS_ARB,<span class='integer'>8</span>,WGL_DEPTH_BITS_ARB,<span class='integer'>24</span>,WGL_DOUBLE_BUFFER_ARB,GL_FALSE,<span class='integer'>0</span>);
pAttrib: <span class='reserved'>Array</span>[<span class='integer'>1</span>..<span class='integer'>4</span>] <span class='reserved'>of</span> Integer = (WGL_TEXTURE_FORMAT_ARB,WGL_TEXTURE_RGBA_ARB,WGL_TEXTURE_TARGET_ARB,WGL_TEXTURE_2D_ARB);
<span class='reserved'>var</span>
WGLExtensions: <span class='reserved'>String</span>;
wglGetExtensionsStringARB: <span class='reserved'>function</span>(hDC: HDC): PChar; stdcall;
wglChoosePixelFormatARB: <span class='reserved'>function</span>(hDC: HDC; <span class='reserved'>const</span> piAttribIList: PGLint; <span class='reserved'>const</span> pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): Boolean; stdcall;
wglCreatePbufferARB: <span class='reserved'>function</span>(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; <span class='reserved'>const</span> piAttribList: PGLint): THandle; stdcall;
wglGetPbufferDCARB: <span class='reserved'>function</span>(hPbuffer: THandle): HDC; stdcall;
wglReleasePbufferDCARB: <span class='reserved'>function</span>(hPbuffer: THandle; hDC: HDC): GLint; stdcall;
wglDestroyPbufferARB: <span class='reserved'>function</span>(hPbuffer: THandle): Boolean; stdcall;
PixelFormat, Count: Integer;
FbufferDC: hDC;
FbufferRC: HGLRC;
FPBuffer: HPBufferARB;
OldRC: HGLRC;
OldDC: HDC;
<span class='reserved'>begin</span>
OldRC:=wglGetCurrentContext;
OldDC:=wglGetCurrentDC;
wglGetExtensionsStringARB:=wglGetProcAddress('wglGetExtensionsStringARB');
<span class='reserved'>if</span> <span class='reserved'>not</span> Assigned(wglGetExtensionsStringARB) <span class='reserved'>then</span> Exit;
WGLExtensions:=wglGetExtensionsStringARB(wglGetCurrentDC);
<span class='reserved'>if</span> Pos('WGL_ARB_pixel_format',WGLExtensions)=<span class='integer'>0</span> <span class='reserved'>then</span> Exit;
<span class='reserved'>if</span> Pos('WGL_ARB_pbuffer',WGLExtensions)=<span class='integer'>0</span> <span class='reserved'>then</span> Exit;
wglChoosePixelFormatARB:=wglGetProcAddress('wglChoosePixelFormatARB');
wglCreatePbufferARB:=wglGetProcAddress('wglCreatePbufferARB');
wglGetPbufferDCARB:=wglGetProcAddress('wglGetPbufferDCARB');

wglChoosePixelFormatARB(wglGetCurrentDC,@attr,<span class='reserved'>nil</span>,<span class='integer'>1</span>,@PixelFormat,@Count);
FPBuffer:=wglCreatePbufferARB(wglGetCurrentDC,PixelFormat,Width,Height,@pAttrib);
FbufferDC:=wglGetPbufferDCARB(FPBuffer);
FbufferRC:=wglCreateContext(FbufferDC);
<span class='reserved'>if</span> FPBuffer=<span class='integer'>0</span> <span class='reserved'>then</span>
ShowMessage('Error creating the PBuffer');
<span class='reserved'>end</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

Wenn ich bei der Zeile:
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre> FPBuffer:=wglCreatePbufferARB(wglGetCurrentDC,PixelFormat,Width,Height,@pAttrib);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
als letztes Attribut wieder nil mache, wird der PBuffer erstellt... ist evtl was an meinen pAttrib's falsch???

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2003 13:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ja, du machst bei den Attributen ganz gewaltig was falsch :
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>pAttrib: <span class='reserved'>Array</span>[<span class='integer'>1</span>..<span class='integer'>4</span>] <span class='reserved'>of</span> Integer = (WGL_TEXTURE_FORMAT_ARB,WGL_TEXTURE_RGBA_ARB,WGL_TEXTURE_TARGET_ARB,WGL_TEXTURE_2D_ARB);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
Da fehlt nämlich am Ende die abschliessende null.Es muss also so lauten :
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>pAttrib: <span class='reserved'>Array</span>[<span class='integer'>0</span>..<span class='integer'>4</span>] <span class='reserved'>of</span> Integer = (WGL_TEXTURE_FORMAT_ARB,WGL_TEXTURE_RGBA_ARB,WGL_TEXTURE_TARGET_ARB,WGL_TEXTURE_2D_ARB,<span class='integer'>0</span>);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
(Ich beginn meine Arrays konsequenterweise immer bei 0)

P.S. : Wenn Interesse besteht, dann lad ich mal meine PBuffer-Unit hoch, die zum einen problemlos funzt, und auch komplettes Error-Logging beinhaltet, so dass die Fehlersuche dort recht einfach wird.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2003 15:02 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ok.. der PBuffer wird nun wieder erstellt, ist aber immernoch dasselbe Problem wie davor... das was da als Screenshot aus dem PBuffer rauskommt schaut so aus:

Bild
Und ich hab KA wieso...

Hier nochmal der komplette Code vom PBuffer:

<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>procedure</span> TTextur.CopyTexture;
<span class='reserved'>type</span>
HPBufferARB = UInt;
<span class='reserved'>const</span>
WGL_COLOR_BITS_ARB = $2014;
WGL_DEPTH_BITS_ARB = $2022;
WGL_TEXTURE_FORMAT_ARB = $2072;
WGL_TEXTURE_RGBA_ARB = $2076;
WGL_TEXTURE_TARGET_ARB = $2073;
WGL_TEXTURE_2D_ARB = $207A;
WGL_SUPPORT_OPENGL_ARB = $2010;
WGL_DRAW_TO_PBUFFER_ARB = $202D;
WGL_BIND_TO_TEXTURE_RGBA_ARB = $2071;
WGL_RED_BITS_ARB = $2015;
WGL_GREEN_BITS_ARB = $2017;
WGL_BLUE_BITS_ARB = $2019;
WGL_ALPHA_BITS_ARB = $201B;
WGL_DOUBLE_BUFFER_ARB = $2011;
attr: <span class='reserved'>Array</span>[<span class='integer'>0</span>..<span class='integer'>18</span>] <span class='reserved'>of</span> Integer = (WGL_SUPPORT_OPENGL_ARB,GL_TRUE,WGL_DRAW_TO_PBUFFER_ARB,GL_TRUE,
WGL_BIND_TO_TEXTURE_RGBA_ARB,GL_TRUE,WGL_RED_BITS_ARB,<span class='integer'>8</span>,WGL_GREEN_BITS_ARB,<span class='integer'>8</span>,WGL_BLUE_BITS_ARB,<span class='integer'>8</span>,
WGL_ALPHA_BITS_ARB,<span class='integer'>8</span>,WGL_DEPTH_BITS_ARB,<span class='integer'>24</span>,WGL_DOUBLE_BUFFER_ARB,GL_FALSE,<span class='integer'>0</span>);
pAttrib: <span class='reserved'>Array</span>[<span class='integer'>0</span>..<span class='integer'>4</span>] <span class='reserved'>of</span> Integer = (WGL_TEXTURE_FORMAT_ARB,WGL_TEXTURE_RGBA_ARB,WGL_TEXTURE_TARGET_ARB,WGL_TEXTURE_2D_ARB,<span class='integer'>0</span>);
<span class='reserved'>var</span>
WGLExtensions: <span class='reserved'>String</span>;
wglGetExtensionsStringARB: <span class='reserved'>function</span>(hDC: HDC): PChar; stdcall;
wglChoosePixelFormatARB: <span class='reserved'>function</span>(hDC: HDC; <span class='reserved'>const</span> piAttribIList: PGLint; <span class='reserved'>const</span> pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): Boolean; stdcall;
wglCreatePbufferARB: <span class='reserved'>function</span>(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; <span class='reserved'>const</span> piAttribList: PGLint): THandle; stdcall;
wglGetPbufferDCARB: <span class='reserved'>function</span>(hPbuffer: THandle): HDC; stdcall;
wglReleasePbufferDCARB: <span class='reserved'>function</span>(hPbuffer: THandle; hDC: HDC): GLint; stdcall;
wglDestroyPbufferARB: <span class='reserved'>function</span>(hPbuffer: THandle): Boolean; stdcall;
PixelFormat, Count: Integer;
OldDC, FbufferDC: hDC;
OldRC, FbufferRC: HGLRC;
FPBuffer: HPBufferARB;
<span class='reserved'>begin</span>
OldRC:=wglGetCurrentContext;
OldDC:=wglGetCurrentDC;
wglGetExtensionsStringARB:=wglGetProcAddress('wglGetExtensionsStringARB');
<span class='reserved'>if</span> <span class='reserved'>not</span> Assigned(wglGetExtensionsStringARB) <span class='reserved'>then</span> Exit;
WGLExtensions:=wglGetExtensionsStringARB(wglGetCurrentDC);
<span class='reserved'>if</span> Pos('WGL_ARB_pixel_format',WGLExtensions)=<span class='integer'>0</span> <span class='reserved'>then</span> Exit;
<span class='reserved'>if</span> Pos('WGL_ARB_pbuffer',WGLExtensions)=<span class='integer'>0</span> <span class='reserved'>then</span> Exit;
wglChoosePixelFormatARB:=wglGetProcAddress('wglChoosePixelFormatARB');
wglCreatePbufferARB:=wglGetProcAddress('wglCreatePbufferARB');
wglGetPbufferDCARB:=wglGetProcAddress('wglGetPbufferDCARB');

wglChoosePixelFormatARB(wglGetCurrentDC,@attr,<span class='reserved'>nil</span>,<span class='integer'>1</span>,@PixelFormat,@Count);
FPBuffer:=wglCreatePbufferARB(wglGetCurrentDC,PixelFormat,Width,Height,@pAttrib);
FbufferDC:=wglGetPbufferDCARB(FPBuffer);
FbufferRC:=wglCreateContext(FbufferDC);
wglMakeCurrent(FbufferDC,FbufferRC);
glClearColor(<span class='integer'>0</span>,<span class='integer'>0</span>,<span class='integer'>0</span>,<span class='integer'>0</span>);
wglShareLists(OldRC,FbufferRC);

wglMakeCurrent(FbufferDC,FbufferRC);
ActivateRenderingContext(FbufferDC,FbufferRC);
glClear(GL_COLOR_BUFFER_BIT <span class='reserved'>or</span> GL_DEPTH_BUFFER_BIT);
glLoadIdentity;
Bind;
glBegin(GL_QUADS);
glTexCoord2f(<span class='integer'>1</span>,<span class='integer'>1</span>); glVertex3f(Width,<span class='integer'>0</span>,<span class='integer'>0</span>);
glTexCoord2f(<span class='integer'>0</span>,<span class='integer'>1</span>); glVertex3f(<span class='integer'>0</span>,<span class='integer'>0</span>,<span class='integer'>0</span>);
glTexCoord2f(<span class='integer'>0</span>,<span class='integer'>0</span>); glVertex3f(<span class='integer'>0</span>,Height,<span class='integer'>0</span>);
glTexCoord2f(<span class='integer'>1</span>,<span class='integer'>0</span>); glVertex3f(Width,Height,<span class='integer'>0</span>);
glEnd;
ColorDepth:=<span class='integer'>32</span>;
FreeMem(RGBQuad);
RGBQuad:=<span class='reserved'>nil</span>;
GetMem(RGBQuad,Width*Height*<span class='integer'>4</span>);
glFinish;
glPixelStorei(GL_PACK_ALIGNMENT,<span class='integer'>4</span>);
glPixelStorei(GL_PACK_ROW_LENGTH,<span class='integer'>0</span>);
glPixelStorei(GL_PACK_SKIP_ROWS,<span class='integer'>0</span>);
glPixelStorei(GL_PACK_SKIP_PIXELS,<span class='integer'>0</span>);
glReadPixels(<span class='integer'>0</span>,<span class='integer'>0</span>,Width,Height,GL_RGBA,GL_UNSIGNED_BYTE,RGBQuad);
wglReleasePbufferDCARB:=wglGetProcAddress('wglReleasePbufferDCARB');
wglDestroyPbufferARB:=wglGetProcAddress('wglDestroyPbufferARB');
<span class='reserved'>if</span> FPBuffer<>0 <span class='reserved'>then</span> <span class='reserved'>begin</span>
wglDeleteContext(FbufferRC);
wglReleasePbufferDCARB(FPBuffer,FbufferDC);
wglDestroyPbufferARB(FPBuffer);
<span class='reserved'>end</span>;
DeactivateRenderingContext;
wglMakeCurrent(OldDC,OldRC);
ActivateRenderingContext(OldDC,OldRC);
<span class='reserved'>end</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

evtl könnt ihr das ja auch bei euch einfach mal ausprobieren ob's da klappt... :unsure:

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2003 15:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Son of Satan hat geschrieben:
P.S. : Wenn Interesse besteht, dann lad ich mal meine PBuffer-Unit hoch, die zum einen problemlos funzt, und auch komplettes Error-Logging beinhaltet, so dass die Fehlersuche dort recht einfach wird.

mh.. gerne, vieleicht find ich dann raus wo ich den fehler gemacht habe :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2003 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hmm...dein Quad wird ja in den PBuffer gerendert.Deshalb geh ich ganz einfach mal davon aus, das du vergessen hast das Texturemapping für den RC des PBuffers zu aktivieren.Denn der PBuffer hat ja nen eigenen, unabhängigen Renderkontext mit ner eigenen Statemachine.Wenn du auch auf dem RC des PBuffers Texturen willst, musste nach dessen Aktivierung natürlich auch glEnable(GL_TEXTURE_2D) aufrufen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 18, 2003 15:35 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
autsch... danke *g+ Das war's ... *pfeift unschuldig*


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


Wer ist online?

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