| |
|
|
funkheld | Hallo, guten Tag. Ich nehme ein drehendes Bild aus dem OGL-Fenster und stelle es in einem hNewPic dar. Ich mache es weil es in OGL einfach ist so etwas zu drehen. Fuktioniert auch soweit wunderbar. Bloß beim ersten starten vom Programm erscheint das OGL-BIld erst im OGL-Fenster wenn ich es mindestens kurz rechts oder links gedreht habe. Das hNewpic erscheint erst , wenn ich das Hauptfenster mit der Mauss etwas bewegt habe.
Wo habe ich bitte beim Start ein Hindernis drin?
Danke. Gruss
declare hWin&,hintergrpic&,vordergrpic&
declare ende&,winkel!,groesse&,dib&,array&
declare bild_auto&,auto1&,auto11&,pi180!
declare bmi#,ogl_rgb#
declare x1!,y1!,dx!,dy!
Declare ClassName$
Def &GL_BGR $80E0
DEF CreateDIB(2) !"dib","CreateDIB"
DEF FreeDIB(1) !"dib","FreeDIB"
DEF DrawDIB(4) !"dib","DrawDIB"
DEF CloneDIB(1) !"dib","CloneDIB"
dib&=usedll("dib.dll")
hintergrpic& = create("hNewPic", 400,400,rgb(255,255,0))
vordergrpic& = create("hNewPic", 400,400,rgb(255,255,0))
bild_auto& = create("hNewPic", 128,128,rgb(255,255,0))
Pi180!=0.0174532925199433
ende&=1
array&=CreateDIB(128,128)
groesse&=128*128*4
dim ogl_rgb#,groesse&
startpaint hintergrpic&
UsePen 0,1,Rgb(0,255,0)
usebrush 1,rgb(0,255,0)
ellipse 150,150-250,250
endpaint
Window 20,20-800,600
Cls RGB(220,220,220)
ClassName$ = "Fenster"
External("User32", "GetClassNameA", %HWnd, ClassName$, 64)
hWin& = Control(Trim$(ClassName$), "", $50000000, 10, 10, 128, 128, %HWnd, 0, %HInstance)
oGL("Init",hwin&,0,0,0,0)
oGL("PosMode", 1)
auto1&=oGL("LoadTextureBMP","d:/xprofan/pxpse/data/auto1.bmp",1)
auto11&=oGL("LoadTextureBMP","d:/xprofan/xpse/data/auto11.bmp",1)
OGL("Clear")
OGL("texture",auto1&,1)
drawglscene
zeichne
WHILE ende&
if isKey(89)
OGL("texture",auto1&,1)
drawglscene
zeichne
ElseIf Iskey(65)
OGL("texture",auto11&,1)
drawglscene
zeichne
EndIf
if isKey(87)
y1!=Sin(-winkel!*Pi180!)*0.3
x1!=Cos(-winkel!*Pi180!)*0.3
dx!=dx!-x1!
dy!=dy!-y1!
zeichne
Elseif isKey(83)
y1!=Sin(-winkel!*Pi180!)*0.3
x1!=Cos(-winkel!*Pi180!)*0.3
dx!=dx!+x1!
dy!=dy!+y1!
zeichne
endif
if isKey(81)
winkel!=winkel!+0.5
drawglscene
zeichne
Elseif isKey(69)
winkel!=winkel!-0.5
drawglscene
zeichne
EndIf
EndWhile
FreeDIB(array&)
end
Proc zeichne
StartPaint vordergrpic&
DrawPic hintergrpic&,0,0;0
drawpic bild_auto&,50+dx!,50+dy!;-1
EndPaint
DrawPic vordergrpic&, 300,50;0
EndProc
proc drawglscene
OGL("quad",0.5,0.5)
OGL("origin",0,0,-1.2)
OGL("rotate",0,0,winkel!)
OGL("show")
ogl("glReadPixels",0,0,128,128,&GL_BGR, ~GL_UNSIGNED_BYTE,ogl_rgb#)
setDIBits(%hdc,bild_auto&,0,128,ogl_rgb#,array&,0)
endproc
|
|
|
| |
|
|
|
RGH | Ohne die DIB.DLL kann Dir keiner helfen, da sich das Programm nicht ausführen lässt.
Gruß Roland |
|
|
| XProfan X3Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 28.04.2016 ▲ |
|
|
|
|
funkheld | Jup, hier ist sie. Ich dachte , es wäre ein Problem in der Programmierstruktur.
Gruss |
|
|
| |
|
|
|
Georg Teles | Bin kein oGL Nutzer, so auf Schnelle aber wenn ich folgendes mache vor der While Schleife:
2 mal also von jeder Proc, dann wird es gezeichnet, vielleicht ist was in drawglscene was für zeichne Prozedur benütigt wird und umgekehrt ?
PS: das Problem trat hier auch schon einmal auf [...]
Servus |
|
|
| |
|
|