| |
|
|
| Der Befehl &OGLBMP para una OGL-Bild ärgert una bastante schön. In Profano2Cpp es él no durchführbar. Und en algunos Systemen con Vista ärgert él auch.
Yo habe en mi Programa una gute Variante: proc oglzubmp ogl(glReadPixels,0,0,128,128,~GL_BGRA,~GL_UNSIGNED_BYTE,ogl_rgb#) ~setDIBits(%hdc,bild_auto_h&,0,128,ogl_rgb#,bmi#,0) ENDPROC
Womit uno el Lage y el grösse de una Opengl-Ventana fischen kann. Dazu braucht uno aber Daten de el Bitmapheader.
Tal vez könntest du Roland el irgendwie einbauen.
mfg KompilierenMarcaSeparación $H Windows.ph
DEF rgb_umwandlung(2) ! bmptex.dll,bmptex
declare x1!,y1!,dx!,dy!,winkel!,y&,z%,groesse%
declare hWin&
declare width%,height%,texid%,ende%
declare bild_auto_h&,bild_umw_h&
declare bmi#,bildxy# ,ogl_rgb#
groesse%=128*128*4
dim bildxy#,groesse%
dim ogl_rgb#,groesse%
ende%=1
Window 20,20-400,200
Cls @RGB(220,220,220)
hWin& = @Create(text, %hWnd, Test1, 10, 10, 128,128)
oGL(Init, hwin&, 0,0, 0, 0)
oGL(PosMode, 1)
bild_auto_h& = Create(hnewPic,128,128,0 )
var tex.auto%=erzeugetex(auto.bmp)
drawglscene
drawglscene
oglzubmp
WHILE ende%
sleep 1
if isKey(81)
winkel!=winkel!+1.0
drawglscene
oglzubmp()
endif
if isKey(69)
winkel!=winkel!-1.0
drawglscene
oglzubmp()
endif
startpaint %hWnd
drawpic bild_auto_h&,200,10,-1
endpaint
ENDWHILE
end
proc oglzubmp
ogl(glReadPixels,0,0,128,128,~GL_BGRA,~GL_UNSIGNED_BYTE,ogl_rgb#)
~setDIBits(%hdc,bild_auto_h&,0,128,ogl_rgb#,bmi#,0)
endproc
proc drawglscene
OGL(Clear)
OGL(origin,0,0,-1.11)
OGL(texture,tex.auto%,1)
OGL(rotate,0,0,winkel!)
OGL(quad,0.5,0.5)
OGL(show)
endproc
proc bitmap_header
def &BI_RGB 0
def &DIB_RGB_COLORS 0
struct BITMAPINFOHEADER =
biSize&, biWidth&, biHeight&, biPlanes%, biBitCount%, biCompression&,
biSizeImage&, biXPelsPerMeter&, biYPelsPerMeter&, biClrUsed&, biClrImportant&
dim bmi#,BITMAPINFOHEADER
clear bmi#
with bmi#
.biSize& = sizeof(bmi#)
.biWidth& = width%
.biHeight& = height%
.biPlanes% = 1
.biBitCount% = 32
.biCompression& = &BI_RGB
.biSizeImage& = ((.biWidth& * .biBitCount% 8 - 1) | 3 + 1) * abs(.biHeight&)
endwith
endproc
proc erzeugetex
parameters namebild$
texid%=0
height%=128
width%=128
dispose bmi#
bitmap_header()
bild_umw_h& = Create(hPic, -1, namebild$)
~GetDIBits(%hdc,bild_umw_h&,0,bmi#.biHeight&,bildxy#,bmi#,0)
rgb_umwandlung(bildxy#,groesse%)
OGL(glGenTextures,1,ADDR(texid%))
OGL(glBindTexture,~GL_TEXTURE_2D,texid%)
OGL(glEnable,~GL_ALPHA_TEST)
OGL(glAlphaFunc,~GL_GREATER, 0.1)
OGL(glTexParameteri,~GL_TEXTURE_2D, ~GL_TEXTURE_MAG_FILTER, ~GL_LINEAR)
OGL(glTexParameteri,~GL_TEXTURE_2D, ~GL_TEXTURE_MIN_FILTER, ~GL_LINEAR)
OGL(gluBuild2DMipmaps,~GL_TEXTURE_2D, ~GL_RGBA, height%, width%, ~GL_RGBA, ~GL_UNSIGNED_BYTE, bildxy#)
dispose bildxy#
RETORNO texid%
ENDPROC
|
|
|
| |
|
|
|
Jac de Lad | Yo sería más sagen, dass lo Sebastians Sache es, qué él así macht. In Profano funktionierts, si con el Workaround en Prf2CPP va, entonces kann Sebastian lo sí así umsetzen. Den Befehl igual komplett umzustricken halte Yo persönlich para no sinnvoll. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 01.03.2009 ▲ |
|
|
|
|
Jac de Lad | Ok, Yo tener el otro Hilo dazu sólo ahora gelesen (&OGLBMP y Vista). Yo ziehe media vorigen Contribución zurück. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 01.03.2009 ▲ |
|
|
|
|
| Yo sería más sagen, dass lo Sebastians Sache es, qué él así macht. In Profano funktionierts, si con el Workaround en Prf2CPP va, entonces kann Sebastian lo sí así umsetzen.
Junge...junge....
Erst denken, entonces escribir. Posesiones Yo dir glaube ya en el anderem Foro dijo. Su Flinte ha una a leichten Abzug. |
|
|
| |
|
|
|
Jac de Lad | Das ha nichts con Denken a tun, pero así, dass el Sprechblase el hilo en el geschrieben stand, dass lo en Vista grundsätzlich no funktioniert, sólo después de diesem geöffnet wurde y se el así natürlich anders darstellt. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 02.03.2009 ▲ |
|
|
|
|
RGH | Jac
Ok, Yo tener el otro Hilo dazu sólo ahora gelesen (&OGLBMP y Vista). Yo ziehe media vorigen Contribución zurück.
Wo es el Hilo &OGLBMP y Vista? Yo finde ihn no. Gibt lo irgendwo una kleines Beispielprogramm en reinem XPRofan, dass bajo Vista no korrekt se ejecuta?
Yo weiß, dass lo bajo XProfan 10 algunos Grafiktreiber (o. OpenGL-Treiber) gab, en denen Crear(hPic,...) con el Bildnamen &OGLBMP no korrekt funktionierte. Betroffen waren algunos Rechner con OnBoard-Grafiklösungen. Daraufhin Yo XProfan adaptado, en el problema a umgehen. Si el Problema bajo Vista erneut auftauchen, debería Yo schauen, si Yo como qué tun kann.
Saludo Roland
BTW: &OGLBMP es kein Befehl (no una vez una Systemvariable), pero una Konstante para el Características Crear(hPic,...) y Crear(hSizedPic,...) |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 02.03.2009 ▲ |
|
|
|
|
Jac de Lad | @Roland: Yo bezog mich hierauf [...] . Bin me pero no sicher, como y si el ahora genau funktioniert. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 02.03.2009 ▲ |
|
|
|
|
| Betroffen waren algunos Rechner con OnBoard-Grafiklösungen. Daraufhin Yo XProfan adaptado, en el problema a umgehen.
Yo habe Grafik OnBoard. AMILO FUJITSU.
Tritt auch en XP en.
Also de me de braucht no geändert voluntad, Yo mi Solución gefunden, el Yo ahora en me en cada Programa como Ersatz einbaut habe para &OGLBMP.
Zumal Yo ahora el Bildschirmausschnitt vom Openglscreen festlegen kann , welchen Yo como BMP haben möchte.
Windooof es manchmal hartnäckig
mfg |
|
|
| |
|
|
|
| &OGLBMP
Auch con Deleteobject müllt el Speicher voll, si yo dauernd una OGL-Screen 128x128 Pixel einlade beim steuern meines Objektes.
mfg |
|
|
| |
|
|