DirectDraw Max2D Driver?
BlitzMax Forums/BlitzMax Programming/DirectDraw Max2D Driver?
| ||
Does anyone have a DirectDraw Max2D Driver? How hard would it be to implement one? |
| ||
What are you trying to do? |
| ||
I believe drawpixmap uses directdraw interface. You then need to create a bitmap font using drawpixmap rather than use drawtext... I think. |
| ||
What are you trying to do? Make more graphics drivers for BlitzMax. |
| ||
DirectDraw and D3D for DX7 are 2 different things. |
| ||
DirectDraw and D3D for DX7 are 2 different things. Thats true. I believe Bmax uses both. |
| ||
Just wanted to verify that DirectDraw is not used in Blitzmax. All of the 2d plotting, rect, line drawing, etc, is actually via the 3d pipeline.Method DrawLine( x0#,y0#,x1#,y1#,tx#,ty# ) If Not IsValid() Return Local lx0#,ly0#,lx1#,ly1# lx0=x0*ix+y0*iy+tx ly0=x0*jx+y0*jy+ty lx1=x1*ix+y1*iy+tx ly1=x1*jx+y1*jy+ty If linewidth=1.0 cverts[0]=lx0+.5001 cverts[1]=ly0+.5001 cverts[4]=lx1+.5001 cverts[5]=ly1+.5001 SetActiveFrame Null device.DrawPrimitive(D3DPT_LINELIST,D3DFVF_XYZ|D3DFVF_DIFFUSE,cverts,2,0) Else Local lw#=linewidth*0.5 If Abs(ly1-ly0)>Abs(lx1-lx0) cverts[0]=lx0-lw cverts[1]=ly0 cverts[4]=lx0+lw cverts[5]=ly0 cverts[8]=lx1-lw cverts[9]=ly1 cverts[12]=lx1+lw cverts[13]=ly1 Else cverts[0]=lx0 cverts[1]=ly0-lw cverts[4]=lx0 cverts[5]=ly0+lw cverts[8]=lx1 cverts[9]=ly1-lw cverts[12]=lx1 cverts[13]=ly1+lw EndIf SetActiveFrame Null device.DrawPrimitive(D3DPT_TRIANGLESTRIP,D3DFVF_XYZ|D3DFVF_DIFFUSE,cverts,4,0) EndIf End Method |
| ||
DrawPixmap and GrabPixmap uses directDraw¡£ |
| ||
All of the 2d plotting, rect, line drawing, etc, is actually via the 3d pipeline. Hence tonyg's original post... I believe drawpixmap uses directdraw interface. |
| ||
Yan - yep. Thanks for pointing that out. :)Method DrawPixmap( pixmap:TPixmap,x,y ) If Not IsValid() Return Local srcdc,destdc Local surf:IDirectDrawSurface7 Local renderSurf:IDirectDrawSurface7 D3D7GraphicsDriver().EndScene device.GetRenderTarget Varptr renderSurf renderSurf.GetDC Varptr destdc surf=surffrompixmap( pixmap ) surf.GetDC Varptr srcdc BitBlt destdc,x,y,pixmap.width,pixmap.height,srcdc,0,0,ROP_SRCCOPY surf.ReleaseDC srcdc renderSurf.ReleaseDC destdc surf.Release_ D3D7GraphicsDriver().BeginScene End Method Method GrabPixmap:TPixmap( x,y,width,height ) If Not IsValid() Return Local pixmap:TPixmap Local srcdc,destdc Local surf:IDirectDrawSurface7 Local renderSurf:IDirectDrawSurface7 D3D7GraphicsDriver().EndScene device.GetRenderTarget Varptr renderSurf pixmap=TPixmap.Create( width,height,PF_BGR888 ) renderSurf.GetDC Varptr srcdc surf=surffrompixmap( pixmap ) surf.GetDC Varptr destdc BitBlt destdc,0,0,width,height,srcdc,x,y,ROP_SRCCOPY surf.ReleaseDC destdc renderSurf.ReleaseDC srcdc surf.Release_() D3D7GraphicsDriver().BeginScene Return pixmap End Method |
| ||
I believe drawpixmap uses directdraw interface. Didn't realize that before. That opens up a bunch of new possibilities. Like this. http://www.blitzbasic.com/codearcs/codearcs.php?code=2352 |