Page 1 of 1
Diamond for test (OpenGL)
Posted: Mon Nov 13, 2023 3:41 am
by threedslider
Hi
I share you my code as fun
Code: Select all
;;;
;;; Created by threedslider -- 11/13/2023
;;;
InitSprite()
InitKeyboard()
OpenWindow(0, 0, 0, 800, 600, "OpenGL : Diamond for test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)
glMatrixMode_(#GL_PROJECTION)
glLoadIdentity_()
gluPerspective_(45.0, 800/600, 1.0, 60.0)
glMatrixMode_(#GL_MODELVIEW)
glTranslatef_(0, 0, -50)
glShadeModel_(#GL_SMOOTH)
glEnable_(#GL_LIGHT0)
glEnable_(#GL_LIGHTING)
glEnable_(#GL_COLOR_MATERIAL)
glEnable_(#GL_DEPTH_TEST)
glEnable_(#GL_CULL_FACE)
glViewport_(0, 0, 800, 600)
Repeat
glClearColor_(0.1, 0.1, 0.1, 0) ; background color
glClear_(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
Repeat
event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
quit = 1
EndSelect
Until event = 0
For x = 0 To 360
move.f + 1/100000
helix_x.f = 50 *Exp((move-x)/200) * Cos(move+x)
helix_y.f = 50 *Exp((move-x)/200) * Sin(move+x)
glBegin_(#GL_LINES)
glColor3f_(1.0, 0.3, 1.0)
glVertex3f_( helix_x*0.3, 0.3, 0.3)
glVertex3f_( -0.3, -helix_y*0.3, 0.3)
glEnd_();
Next
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) Or quit = 1
Happy coding !
Re: Diamond for test (OpenGL)
Posted: Mon Nov 13, 2023 9:24 am
by Mijikai
Nice effect

Re: Diamond for test (OpenGL)
Posted: Tue Nov 14, 2023 12:42 am
by threedslider
Thank you Mijikai !
Re: Diamond for test (OpenGL)
Posted: Tue Nov 14, 2023 7:52 am
by juergenkulow
Code: Select all
;;;
;;; Created by threedslider -- 11/13/2023
;;;
InitSprite()
InitKeyboard()
ExamineDesktops()
#Screen=0
OpenWindow(0, 0, 0, DesktopWidth(#Screen), DesktopHeight(#Screen), "OpenGL : Demo", #PB_Window_Maximize|#PB_Window_BorderLess)
OpenWindowedScreen(WindowID(0), 0,0, DesktopWidth(#Screen), DesktopHeight(#Screen))
glMatrixMode_(#GL_PROJECTION)
glLoadIdentity_()
aspectratio.f=DesktopWidth(#Screen)/DesktopHeight(#Screen)
gluPerspective_(45.0,aspectratio , 0.5, 60.0)
glMatrixMode_(#GL_MODELVIEW)
glTranslatef_(0, 0, -50)
glShadeModel_(#GL_SMOOTH)
glEnable_(#GL_LIGHT0)
glEnable_(#GL_LIGHTING)
glEnable_(#GL_COLOR_MATERIAL)
glEnable_(#GL_DEPTH_TEST)
glEnable_(#GL_CULL_FACE)
glViewport_(0, 0, DesktopWidth(#Screen), DesktopHeight(#Screen))
start=ElapsedMilliseconds()
blue.f=0.0
move.f=0.0
Repeat
blue+1/256
If blue>1.0
blue=0.0
; Debug Str(ElapsedMilliseconds()/1000.0)+" "+StrF(move)
EndIf
glClearColor_(0.1, 0.1, blue, 0) ; background color
glClear_(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
Repeat
event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
quit = 1
EndSelect
Until event = 0
DisableDebugger
For x = 0 To 360
move + 1/100000
helix_x.f = 50 *Exp((move-x)/200) * Cos(move+x)
helix_y.f = 50 *Exp((move-x)/200) * Sin(move+x)
glBegin_(#GL_LINES)
glColor3f_(1.0, 1.0, 1.0)
CompilerIf #PB_OS_Windows=#PB_Compiler_OS
glVertex3f_( helix_x*0.3, 0.3, 0.3)
glVertex3f_( -0.3, -helix_y*0.3, 0.3)
CompilerElseIf #PB_OS_Linux=#PB_Compiler_OS
f.f=120
glVertex3f_(f*helix_x, f, 25)
glVertex3f_( -f, -helix_y*f, 25)
CompilerEndIf
glEnd_();
Next
If move>255.0 : move=0.0 : EndIf
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) Or quit = 1
EnableDebugger
; Debug ElapsedMilliseconds()-start
Re: Diamond for test (OpenGL)
Posted: Tue Nov 14, 2023 2:13 pm
by pf shadoko
Hello,
is there a way to make anti-alias tracings?
Re: Diamond for test (OpenGL)
Posted: Tue Nov 14, 2023 7:09 pm
by pjay
Nice
As my desktop scale is > 100%, it showed that it wasn't scaling properly to the window, so you're missing some dpi awareness (window @ 800*600 is larger than the windowed screen at 800*600, on my system at least).
pf shadoko wrote: Tue Nov 14, 2023 2:13 pm
Hello,
is there a way to make anti-alias tracings?
Usually adding the following would be enough for smooth opengl lines:
Code: Select all
glEnable_(#GL_LINE_SMOOTH) : glHint_(#GL_LINE_SMOOTH_HINT,#GL_NICEST)
glEnable_(#GL_BLEND) : glBlendFunc_(#GL_SRC_ALPHA, #GL_ONE_MINUS_SRC_ALPHA)
Some modified demo code that builds on the original:
Code: Select all
;;;
;;; Created by threedslider -- 11/13/2023
;;; - modification by PJay to simplify, make dpi aware & snazzy.
OpenWindow(0, 0, 0, 800, 600, "OpenGL : Diamond for test", #PB_Window_Maximize|#PB_Window_BorderLess)
OpenGLGadget(0,0,0,WindowWidth(0),WindowHeight(0),#PB_OpenGL_FlipSynchronization|#PB_OpenGL_Keyboard) : SetActiveGadget(0)
glOrtho_(-1,1,1,-1,0,1)
glEnable_(#GL_LINE_SMOOTH) : glHint_(#GL_LINE_SMOOTH_HINT,#GL_NICEST)
glEnable_(#GL_BLEND) : glBlendFunc_(#GL_SRC_ALPHA, #GL_ONE_MINUS_SRC_ALPHA)
glLineWidth_(6.75)
Repeat
glClearColor_(0.0, 0.05, 0.05, 0.075) : glClear_(#GL_COLOR_BUFFER_BIT)
Repeat
event = WindowEvent()
If event = #PB_Event_Gadget : If GetGadgetAttribute(0,#PB_OpenGL_Key) = #VK_ESCAPE : quit = 1 : EndIf : EndIf
Until event = 0
glBegin_(#GL_LINES)
For x = 0 To 360
move.f + 1.0/100000.0 : t.f = (move + (x / 360.0))
glColor4f_(0.5 + 0.5 * Cos(6.28318 * (1.0 * t + 0.263)), 0.5 + 0.5 * Cos(6.28318 * (1.0 * t + 0.416)), 0.5 + 0.5 * Cos(6.28318 * (1.0 * t + 0.557)),0.75)
glVertex2f_(((1.0 + Sin(t)) * Exp((move-x)/200) * Cos(move+x)), 0.0)
glVertex2f_(0.0, -((1.0 + Cos(t)) * Exp((move-x)/200) * Sin(move+x)))
Next
glEnd_();
SetGadgetAttribute(0,#PB_OpenGL_FlipBuffers,#True)
Until quit = 1
Re: Diamond for test (OpenGL)
Posted: Wed Nov 15, 2023 7:43 am
by threedslider
Thanks all and good job guys !

Re: Diamond for test (OpenGL)
Posted: Wed Nov 15, 2023 12:15 pm
by pf shadoko
thanks Pjay
it makes you want to make a graphic lib
the PB sprite lib is very rudimentary, we could make an improved one
do you think it's possible to remake the vectordrawing lib in opengl?
Re: Diamond for test (OpenGL)
Posted: Wed Nov 15, 2023 3:06 pm
by firace
pf shadoko wrote: Wed Nov 15, 2023 12:15 pm
thanks Pjay
it makes you want to make a graphic lib
the PB sprite lib is very rudimentary, we could make an improved one
do you think it's possible to remake the vectordrawing lib in opengl?
Have you seen this? Perhaps you will find it interesting
viewtopic.php?t=81764
Re: Diamond for test (OpenGL)
Posted: Fri Nov 17, 2023 10:54 am
by pf shadoko
thanks Firace,
I had a look, it looks interesting, but it's not very easy to use...
Pjay gave me a solution to draw anti-aliased lines, but it doesn't work on polygons (with glEnable_(#GL_POLYGON_SMOOTH) )
does anyone have a solution?
(I'd like to redo the VectorDrawing lib in opengl)