Author Topic: Opengl glenze vector  (Read 2982 times)

0 Members and 1 Guest are viewing this topic.

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17409
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Opengl glenze vector
« on: January 19, 2008 »
I had some problems with blending but eventually I got this to work (though it probably can be done much more efficiently)

Source;
Code: [Select]
'
'                         GLENZE VECTOR WITH OPENGL
'                         By Shockwave.
'===============================================================================
    OPTION STATIC
    OPTION EXPLICIT

    #INCLUDE "GL/GL.BI"
    #INCLUDE "GL/GLU.BI"   
    #INCLUDE "WINDOWS.BI"

    DIM SHARED AS INTEGER MOUSE
   
'===============================================================================
'   OPEN A SCREEN 1024 * 768;
'===============================================================================

    SCREEN 20,,,3

'===============================================================================
'   SET UP OPENGL;
'===============================================================================

    GLVIEWPORT 0, 0, 1024, 768                          '' Reset The Current Viewport
GLMATRIXMODE GL_PROJECTION                          '' Select The Projection Matrix
GLLOADIDENTITY
   
    GLUPERSPECTIVE 50.0, 1024.0/768.0, 0.1, 100.0       '' Calculate The Aspect Ratio Of The Window
GLMATRIXMODE GL_MODELVIEW                           '' Select The Modelview Matrix
GLLOADIDENTITY                                      '' Reset The Modelview Matrix

GLSHADEMODEL GL_SMOOTH                              '' Enable Smooth Shading
GLCLEARCOLOR 0.01, 0.01, 0.05, 0.00                     '' Black Background
GLCLEARDEPTH 1.0                                    '' Depth Buffer Setup
GLENABLE GL_DEPTH_TEST                              '' Enables Depth Testing
GLDEPTHFUNC GL_LEQUAL                               '' The Type Of Depth Testing To Do
GLHINT GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST    '' Really Nice Perspective Calculations


    dim shared LightAmbient(0 to 3) as single => {0.01, 0.01, 0.01,0.1}   '' Ambient Light is 20% white
    dim shared LightDiffuse(0 to 3) as single => {0.5, 0.5, 0.5,0.5}   '' Diffuse Light is white
    dim shared LightPosition(0 to 2) as single =>{0.0, 0.0, 15.0   }  '' Position is somewhat in front of screen
   
    glLightfv( GL_LIGHT1, GL_AMBIENT, @LightAmbient(0))        '' Load Light-Parameters Into GL_LIGHT1
glLightfv( GL_LIGHT1, GL_DIFFUSE, @LightDiffuse(0))
    glLightfv( GL_LIGHT1, GL_POSITION, @LightPosition(0))


    glEnable(GL_LIGHTING)
glEnable(GL_LIGHT1)
    GLSHADEMODEL (GL_SMOOTH)

'===============================================================================
'   SUBROUTINES;
'===============================================================================

    DECLARE SUB DRAWGLENZE()

'===============================================================================
'   SETUP;
'===============================================================================

'   MATERIALS;

    DIM SHARED FACE1(0 to 3) AS SINGLE => {1.0, 0.0, 0.0,0.45}  :' RED   FACES
    DIM SHARED FACE2(0 to 3) AS SINGLE => {0.9, 0.9, 0.9,0.45}  :' WHITE FACES
    DIM SHARED FACE3(0 to 3) AS SINGLE => {0.0, 1.0, 0.0,0.45}  :' GREEN FACES
    DIM SHARED FACE4(0 to 3) AS SINGLE => {0.0, 0.0, 1.0,0.45}  :' BLUE  FACES

'   ROTATIONS;

DIM SHARED XR AS SINGLE : ' X ROTATION
DIM SHARED YR AS SINGLE : ' Y ROTATION
DIM SHARED ZR AS SINGLE : ' Z ROTATION
   
'   HIDE MOUSE POINTER;

    MOUSE=SHOWCURSOR(0)
   
    GLENABLE(GL_BLEND)   
    GLBLENDFUNC(GL_ONE_MINUS_CONSTANT_ALPHA,GL_SRC_ALPHA)
    GLENABLE (GL_CULL_FACE)
       
'===============================================================================

WHILE((GETASYNCKEYSTATE(VK_ESCAPE)<> -32767) )

        GLFLUSH()
       
        GLCLEAR GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT   
    GLLOADIDENTITY

        glTranslatef(0, 0, -3)
        glRotatef(xr, 1.0, 0.0, 0.0)
        glRotatef(yr, 0.0, 1.0, 0.0)
        glRotatef(zr, 0.0, 0.0, 1.0)


        GLCULLFACE(GL_FRONT)

        DRAWGLENZE()
   
        GLCULLFACE(GL_BACK)
        DRAWGLENZE()


xr = xr + 0.11
yr = yr + 0.06
zr = zr + 0.15
    FLIP
WEND
END

SUB DRAWGLENZE()
   


   
    GLBEGIN GL_TRIANGLES
    '---------------------------------------------------------------------------
    ' TOP FACE
    '---------------------------------------------------------------------------
   
    GLCOLOR3F 1.0,0.0,0.0
    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE1(0))
   
    GLNORMAL3F  0,1,0
    GLVERTEX3F  1, 1, 1
    GLVERTEX3F  0, 1, 0
    GLVERTEX3F -1, 1, 1   

    GLVERTEX3F  0, 1, 0
    GLVERTEX3F  1, 1, -1
    GLVERTEX3F -1, 1, -1   

    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
   
    GLVERTEX3F -1,1,1
    GLVERTEX3F 0,1,0   
    GLVERTEX3F -1,1,-1

    GLVERTEX3F 0,1,0   
    GLVERTEX3F 1,1,1
    GLVERTEX3F 1,1,-1


    '---------------------------------------------------------------------------
    ' BOTTOM FACE
    '---------------------------------------------------------------------------
   
    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE1(0))
   
    GLNORMAL3F  0,-1,0
    GLVERTEX3F  0, -1, 0
    GLVERTEX3F  1, -1, 1
    GLVERTEX3F -1, -1, 1   

    GLVERTEX3F  0, -1, 0
    GLVERTEX3F -1, -1, -1   
    GLVERTEX3F  1, -1, -1
   

    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
   
    GLVERTEX3F -1,-1,1
    GLVERTEX3F -1,-1,-1   
    GLVERTEX3F 0,-1,0   
   

    GLVERTEX3F 1,-1,1
    GLVERTEX3F 0,-1,0       
    GLVERTEX3F 1,-1,-1


   
    '---------------------------------------------------------------------------
    ' LEFT FACE
    '---------------------------------------------------------------------------
    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))

    GLNORMAL3F -1, 0,0
    GLVERTEX3F -1,-1, 1
    GLVERTEX3F -1, 1, 1
    GLVERTEX3F -1, 0, 0
   
    GLVERTEX3F -1,-1,-1
    GLVERTEX3F -1, 0, 0   
    GLVERTEX3F -1, 1,-1   
   
   
    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE3(0))

    GLVERTEX3F -1, 0, 0
    GLVERTEX3F -1, 1, 1   
    GLVERTEX3F -1, 1,-1

    GLVERTEX3F -1, -1,-1
    GLVERTEX3F -1, -1, 1
    GLVERTEX3F -1,  0, 0

    '---------------------------------------------------------------------------
    ' RIGHT FACE
    '---------------------------------------------------------------------------
    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
   
    GLNORMAL3F 1 ,0,0
    GLVERTEX3F 1, 0, 0
    GLVERTEX3F 1, 1, 1   
    GLVERTEX3F 1,-1, 1
   
    GLVERTEX3F 1, 1,-1
    GLVERTEX3F 1, 0, 0   
    GLVERTEX3F 1,-1,-1
       
   
   
    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE3(0))

    GLVERTEX3F 1, 1,-1
    GLVERTEX3F 1, 1, 1   
    GLVERTEX3F 1, 0, 0
   
    GLVERTEX3F 1,  0, 0
    GLVERTEX3F 1, -1, 1
    GLVERTEX3F 1, -1,-1


    '---------------------------------------------------------------------------
    ' FRONT FACE
    '---------------------------------------------------------------------------

    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE4(0))

    GLNORMAL3F  0,0,1
    GLVERTEX3F -1,-1, 1
    GLVERTEX3F  0, 0, 1
    GLVERTEX3F -1, 1, 1
   
    GLVERTEX3F  0, 0, 1
    GLVERTEX3F  1,-1, 1
    GLVERTEX3F  1, 1, 1

    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
   
    GLVERTEX3F -1,-1, 1
    GLVERTEX3F  1,-1, 1
    GLVERTEX3F  0, 0, 1
   
    GLVERTEX3F  0, 0, 1
    GLVERTEX3F  1, 1, 1
    GLVERTEX3F -1, 1, 1


    '---------------------------------------------------------------------------
    ' BACK FACE
    '---------------------------------------------------------------------------

    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE4(0))

    GLNORMAL3F  0, 0, -1
    GLVERTEX3F  0, 0, -1
    GLVERTEX3F -1,-1, -1   
    GLVERTEX3F -1, 1, -1
   

    GLVERTEX3F  1,-1, -1
    GLVERTEX3F  0, 0, -1   
    GLVERTEX3F  1, 1, -1

    GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
   

    GLVERTEX3F  1,-1, -1
    GLVERTEX3F -1,-1, -1   
    GLVERTEX3F  0, 0, -1
   

    GLVERTEX3F  1, 1, -1
    GLVERTEX3F  0, 0, -1   
    GLVERTEX3F -1, 1, -1


    GLEND
END SUB

and exe attached.
Shockwave ^ Codigos
Challenge Trophies Won:

Offline va!n

  • Pentium
  • *****
  • Posts: 1432
  • Karma: 109
    • View Profile
    • http://www.secretly.de
Re: Opengl glenze vector
« Reply #1 on: January 20, 2008 »
very nice glenze cube.... *thumbs up*
- hp EliteBook 8540p, 4 GB RAM, Windows 8.1 x64
- Asus P5Q, Intel Q8200, 6 GB DDR2, Radeon 4870, Windows 8.1 x64
http://www.secretly.de
Challenge Trophies Won:

Offline BadMrBox

  • ZX 81
  • *
  • Posts: 22
  • Karma: 0
    • View Profile
    • Ragnarok Games
Re: Opengl glenze vector
« Reply #2 on: January 29, 2008 »
Yeah, it looks nice :)
Bringer of Apocalypse

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17409
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Opengl glenze vector
« Reply #3 on: January 29, 2008 »
Thanks, I've ditched the approach of using Freebasic Screens for now though because I found that the exe size was quite big, I'll make a nicer example of this soon and post it here.
Shockwave ^ Codigos
Challenge Trophies Won: