glut und glu für purebasic

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Vallan
Beiträge: 223
Registriert: 20.01.2006 19:34
Kontaktdaten:

Beitrag von Vallan »

XIncludeFile "OpenGL.pbi"
Global hWnd.l

OpenWindow(0, 0, 0, 500, 400,"",#PB_Window_SystemMenu )
hWnd = WindowID(0)
pfd.PIXELFORMATDESCRIPTOR
hDC = GetDC_(hWnd)
pfd\nSize = SizeOf(PIXELFORMATDESCRIPTOR)
pfd\nVersion = 1
pfd\dwFlags = #PFD_SUPPORT_OPENGL | #PFD_DOUBLEBUFFER | #PFD_DRAW_TO_WINDOW
pfd\iLayerType = #PFD_MAIN_PLANE
pfd\iPixelType = #PFD_TYPE_RGBA
pfd\cColorBits = 24
pfd\cDepthBits = 32
pixformat = ChoosePixelFormat_(hDC, pfd)
SetPixelFormat_(hDC, pixformat, pfd)
hrc = wglCreateContext_(hDC)
wglMakeCurrent_(hDC, hrc)


glClearColor_(0.0, 0.0, 1.0, 1.0)
Repeat
glClear_(#GL_COLOR_BUFFER_BIT)

SwapBuffers_(hDC)
Event = WindowEvent()
If Event = #PB_Event_CloseWindow
End
ElseIf Event = 0
Else
Delay(5)
EndIf
ForEver

Screen öffnen, und anstelle von WindowID() ScreenID() schreiben
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Beitrag von super_castle »

hallo, irgendwie pack ich das nicht.
die fehlermeldung:
"initsprite() must be called before use 'sprite'commands
erscheint.

ich habe unten dieses eigenständige programm für opengl , es lädt ein bild ein.

kannst du mir mal einen button anordnen , und das mein programm als openglfenster links oder rechts daneben erscheint.

das eigenständige programm :

Code: Alles auswählen

XIncludeFile "OGLFunctions.pb"



EnableExplicit

Global FPSCount.l, FPSStartTime.l, FPSReal.l
Global textest.l

Procedure Init(hwnd.l)
  Protected bimg.l, z.l
  
  textest = OGLImageLoadTGA("foot3.tga")
  
  OGLFontLoad("Arial", #True)
  
  
  FPSStartTime = GetTickCount_()
  
  If textest = 0
    ProcedureReturn #True
  EndIf
  
  ProcedureReturn #False
EndProcedure


Procedure Draw(hwnd.l)
  Protected z.l, x.f, y.f, n.l
  Static Angle.f = 0
  
  
  
  OGLScreenClear(1.0, 0.0, 1.0)
  
  FPSCount + 1
  If GetTickCount_() - FPSStartTime > 1000
    FPSStartTime + 1000
    FPSReal = FPSCount
    FPSCount = 0
  EndIf
  OGLFontDraw(10, 970, "FPS: " + Str(FPSReal), 0, 0, 0, 0.5)
  
  Angle + 0.1
  OGLBlendingStart() ;>
    OGLImageSetAngle(textest, Angle)
    OGLImageDraw(textest, 200, 200)
  OGLBlendingStop() ;<
  
  
  OGLSwapBuffers()
  
  If GetAsyncKeyState_(#VK_ESCAPE)
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure



OGLStart(@Init(), @Draw(), 800, 600, 32, #False, "OGL")

bin dir sehr dankbar, für deine vorherige hilfe.
vielleicht klappt es. danke

mfg
Benutzeravatar
Vallan
Beiträge: 223
Registriert: 20.01.2006 19:34
Kontaktdaten:

Beitrag von Vallan »

Wei lange ist das her?


Egal: Klar muss man vor dem Öffnen eines Screens InitSprite und initScreen aufrufen.
Antworten