Sub OpenGLGadgetSwapBuffers(ByVal gadget As Long)
Производит смену видеостраниц (двойная буферизация)
gadget - номер гаджета
Windows , Linux
#Include "window9.bi"
Enum gadgets
opengl =1
opengl2
Butchange
End enum
Dim Shared change As Integer
sub SceneDraw()
var w = GadgetWidth(change)
var h = GadGetHeight(change)
glClearColor(0,0,0,0)
glClear(GL_COLOR_BUFFER_BIT)
glBegin(GL_POINTS)
for i as integer = 1 to 5000
glColor3f(rnd,rnd,rnd)
glVertex2i(rnd*w,rnd*h)
next
glEnd()
OpenGLGadgetSwapBuffers(Change)
end sub
var win = OpenWindow("OpenGL Gadget",100,100,510,250)
#Ifdef __FB_WIN32__
ButtonGadget(Butchange,420,80,70,70,"Change Gadget" , BS_MULTILINE)
#Else
ButtonGadget(Butchange,420,80,70,70,!"Change\nGadget")
#EndIf
OpenGLGadget(opengl,5,5,200,200,,0) ' 0 = no depth buffer
OpenGLGadget(opengl2,210,5,200,200,,0) ' 0 = no depth buffer
change=opengl
OpenGLGadgetMakeCurrent(change)
Do
var event = WindowEvent()
Select Case event
Case eventclose
Exit Do
Case eventgadget
If EventNumber = 3 Then
Change = ((change-1) Xor 1)+1
OpenGLGadgetMakeCurrent(change)
EndIf
End Select
SceneDraw()
sleep(1)
Loop
Created with the Personal Edition of HelpNDoc: Full featured Kindle eBooks generator