SetBuffer für BlitzMax, gibts sowas?
Übersicht

![]() |
remaBetreff: SetBuffer für BlitzMax, gibts sowas? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Unter allen BB Varianten gibts SetBuffer( ImageBuffer( meinImage ) ) oder so ähnlich. Gibts das unter BlitzMax nicht mehr? Oder sieht dies jetzt anders aus?
Danke für jedlichen Tip ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein gibt es nicht. Da OpenGL im Unterschied zu DX keine Surfaces kennt, wird es dies auch nicht geben, da es nicht möglich ist. Der einzige Buffer den OpenGL kennt ist der Backbuffer auf den du zeichnest und der rein geflipt wird.
(höchstens als Usererweiterung für das DX7 Modul wenns da ist) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Benutze unter anderem GrabImage. | ||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
Henry |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist auch im Endeffekt ganz einfach...Du erstellst wie üblich ein leeres Bild, nutzt allerdings den Backbuffer, um alle Elemente zu zeichnen, die in dieses Bild sollen...dann führst Du einen GrabImage (oder GrabPixmap) aus und löscht den Backbuffer wieder. | ||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zum Verständnis: Die Grafikkarte hat zwar mehrere Renderingpages aber keine Surfaces. Da Max2D z. Z. den glMax2D-Treiber nutzt - ergo das ganze auf OpenGL basiert, würde soetwas höchstens über RenderToTexture-Extension her gehen. Nachteile sind an die Textur selber gebunden - sie muss quadratisch sein.
Der bald kommende DirectDraw7 Treiber, der nicht auf 3D-Beschleuniger basiert, kann jedoch Surfaces(in dem Sinne Buffers) unterstützen. Die abstrakte Struktur eines Treibers sieht jedoch so aus: Code: [AUSKLAPPEN] Type TImageFrame
Method Draw( x0#,y0#,x1#,y1#,tx#,ty# ) Abstract Method Lock:TPixmap( read_lock,write_lock ) Abstract Method Unlock() Abstract End Type Code: [AUSKLAPPEN] Type TMax2DDriver
Method Graphics( width,height,depth,hertz ) Abstract Method EndGraphics() Abstract Method Flip() Abstract Method SetMouseVisible( visible ) Abstract Method CreateFrameWithSize:TImageFrame( width,height,flags ) Abstract Method CreateFrameFromPixmap:TImageFrame( pixmap:TPixmap,flags ) Abstract Method SetBlend( blend ) Abstract Method SetAlpha( alpha# ) Abstract Method SetColor( red,green,blue ) Abstract Method SetClsColor( red,green,blue ) Abstract Method SetViewport( x,y,width,height ) Abstract Method SetTransform( xx#,xy#,yx#,yy# ) Abstract Method SetLineWidth( width# ) Abstract Method Cls() Abstract Method Plot( x#,y# ) Abstract Method DrawLine( x0#,y0#,x1#,y1#,tx#,ty# ) Abstract Method DrawRect( x0#,y0#,x1#,y1#,tx#,ty# ) Abstract Method DrawOval( x0#,y0#,x1#,y1#,tx#,ty# ) Abstract Method DrawPoly( xy#[],handlex#,handley#,originx#,originy# ) Abstract Method DrawPixmap( pixmap:TPixmap,x,y ) Abstract Method GrabPixmap:TPixmap( x,y,width,height ) Abstract End Type TMax2DDriver ist für die Ausgabe zuständig, glMax2D nutzt hierfür OpenGL. TImageFrame werden dann im DirectDraw7-Treiber die Surfaces sein. Der aktuelle glMax2D-Treiber nutzt zum darstellen eines ImagesFrames(ein Image hat min. ein ImageFrame) ein GL_Quad(was übrigens Performenceverluste mit sich zieht, da das Triangulieren stattfindet) das direkt von der 3D-Renderpipeline gerendert wird. mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
DivineDominion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist dennoch ziemlich bescheuert, weil ich jetzt bei so was trivialem wie einer kleinen Textbox an 0,0 erst einmal alles malen muss um es dann zu grabben. Ichweiß ja nicht wie das im fertigen Spiel aussieht, aber jetzt bei schwarzem Hintergrund flackert das an 0,0 für eine Frame sichtbar auf. Finde ich reichlich unschön. | ||
christian.tietze@gmail.com - https://christiantietze.de
macOS |
klepto2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hast du daran gedacht nach dem grabben CLS vor dem Flip zu benutzen? | ||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Grafikkarte hat mehrere Pages zur verfügung. Eine könnte man für die Szene nehmen, und eine andere für die Textbox. Muss mal schauen, wie man das umsetzen kann, ohne das dabei Max2D beeinflusst wird.
http://www.mevis.de/~uwe/opengl/glDrawBuffer.html Man setzt z. B. erst GL_BACK_LEFT für seine Szene, rendert diese, dann setzt man GL_BACK_RIGHT rendert seine Textbox, grabt diese, setzt wieder GL_BACK_LEFT zeichnet die Tetxbox und Swapt dann die Buffer(Flip). mfg olli Edit4: Code: [AUSKLAPPEN] Strict
Local Image : TImage Local Angle : Float Graphics(640, 480, 0, 0) SetClsColor(255, 255, 0) Image = CreateImage(256, 256) While Not KeyDown(KEY_ESCAPE) Angle :+ 3.0 glDrawBuffer(GL_BACK_LEFT) Cls glDrawBuffer(GL_FRONT_LEFT) SetColor Cos(Angle)*127+127, 0, 255 DrawRect 0, 0, 256, 256 GrabImage(Image, 0, 0) glDrawBuffer(GL_BACK_LEFT) DrawImage(Image, MouseX(), MouseY()) Flip() FlushMem() Wend |
||
vertex.dreamfall.at | GitHub |
- Zuletzt bearbeitet von Vertex am Sa, Mai 28, 2005 15:04, insgesamt 4-mal bearbeitet
![]() |
rema |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also doch, ich muss mich wohl oder übel mit OpenGL beschäftigen. Naja, schon schlimmere Tage gehabt ![]() Danke für die Aufklärung! |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bescheuert ist es nicht. OpenGL ist halt nur für 3D gemacht worden, entsprechend schlecht funktionieren 2D Spielereien wie direktes Arbeiten auf Texturen etc.
Wird wahrscheinlich mit ein Grund sein, warum auf Linux und so SDL eine Beliebtheit hat wie DirectX auf Windows. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group