Page 1 of 2 12 LastLast
Results 1 to 10 of 18

Thread: vertex buffer objects for OpenGl 1.5

  1. #1

    vertex buffer objects for OpenGl 1.5

    Hi Petr
    i want to implement this VBO code in
    https://en.wikipedia.org/wiki/Vertex...ing_OpenGL_2.1
    for opengl 1.5 to 2.1
    i have added #Include "%app_includepath%\thinBasic_GLEXT.inc"
    but i get errors about the function glGenBuffers:
    A general declared function or sub has no process address. See DECLARE SET ADDRESS help for more info.
    i have searched the file "thinBasic_GLEXT.inc" and the glGenBuffers is declared like:
    DECLARE SUB glGenBuffers ( BYVAL Par1 AS GLsizei, BYREF Par2 AS GLuint)
    so what is the mystery?
    i have searched for glGenBuffers inside opengl32.dll which is located my windows xp32 system folder and can't find the glGenBuffers inside the DLL, the only place i find it is inside my nvidea card driver software. i also find it in mesa opengl32.dll https://fdossena.com/?p=mesa/index.frag in which its opengl32.dll have big size > 16MB and seems to contains all extensions.
    best regards
    Uses "tbgl", "MATH"
         
    #Def %GL_GLEXT_PROTOTYPES
    #Include "%app_includepath%\thinbasic_gl.inc"
    #Include "%app_includepath%\thinbasic_glu.inc"
    #Include "%app_includepath%\thinbasic_WGL.inc" 
    #Include "%app_includepath%\thinBasic_GLEXT.inc"
    
    Dim HglGenBuffers As DWord = TBGL_GetProcAddress("glGenBuffers") 
    Declare Set Address glGenBuffers, HglGenBuffers 
         
      Dim hwnd As DWord 
           
      hwnd = TBGL_CreateWindowEx("glDrawArrays example - esc to exit", 600, 600, 32, 0)
      TBGL_ShowWindow
      TBGL_ResetKeyState()
       
    'try float data[] = {0.0, 1.0, 0.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0}
    Global data(9) As Single
    Array Assign data = 1.0, 0.0, 1.0, 0.0, 0.0, -1.0, -1.0, 0.0, 1.0
    
    'Create a New VBO And use the variable id To store the VBO id  
    Global triangleVBO As DWord
    glGenBuffers(1, VarPtr(triangleVBO)) ' //Make the New VBO active
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
    'Upload vertex data To the video device 
    glBufferData(%GL_ARRAY_BUFFER, SizeOf(data), data, %GL_STATIC_DRAW)
    'Make the New VBO active. Repeat here incase changed since initialisation
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
      
      While TBGL_IsWindow(hwnd)
         TBGL_ClearFrame
         
        display
        TBGL_DrawFrame
        If TBGL_GetWindowKeyState( hwnd, %VK_ESCAPE) Then Exit While
      Wend
         
      TBGL_DestroyWindow
     
    '=================================================================================
     
    '--------------------------------------------------------
    '--------------------------------------------------------   
    Sub display()
     
    glMatrixMode(%GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(60.0, 800/600, 1.0, 100.0)
    glMatrixMode(%GL_MODELVIEW)
    'glTranslatef(0, 0, -40)
    glShadeModel(%GL_SMOOTH) 
    glEnable(%GL_DEPTH_TEST)
    gluLookAt( 0, 1, 1,
               0,  1, 0,
                0, 1,  0 ) 
        glclear(%gl_color_buffer_bit)
           
        TBGL_Rotate GetTickCount/30,0,1,0
          
    'Initialise VBO - do only once, at start of program
    'Create a variable To hold the VBO identifier GLuint triangleVBO;
    'Vertices of a triangle (counter-clockwise winding)  
    
    'Draw Triangle from VBO - Do Each time Window, view point Or data changes 
    'Establish its 3 coordinates per vertex With zero stride In This Array; necessary here
     glVertexPointer(3, %GL_FLOAT, 0, NULL)
    'Establish Array Contains vertices (Not normals, colours, texture coords etc)
     glEnableClientState(%GL_VERTEX_ARRAY)
    'Actually Draw the triangle, giving the Number of vertices provided
     glDrawArrays(%GL_TRIANGLES, 1, 9)
     'Force display To be drawn Now
     'glFlush; 
            
     glClear(%GL_COLOR_BUFFER_BIT Or %GL_DEPTH_BUFFER_BIT)
     glClearColor(1, 1, 1, 1)
    
     glDisableClientState(%GL_VERTEX_ARRAY)  
      '**************************************************
           
       
      End Sub
    
    Edit: i have added :
    Dim HglGenBuffers As DWord = TBGL_GetProcAddress("glGenBuffers") 
    Declare Set Address glGenBuffers, HglGenBuffers
    
    but still can't access glGenBuffers

    Edit2:
    my Last try, but still can't access the glGenBuffers
    my card support VBO as i can run the VBO examples in other languages.
    Uses "tbgl"
    
    #Def %GL_GLEXT_PROTOTYPES
    #Include "%app_includepath%\thinbasic_gl.inc"
    #Include "%app_includepath%\thinbasic_glu.inc"
    #Include "%app_includepath%\thinBasic_GLEXT.inc"
    #Include "%app_includepath%\thinbasic_WGL.inc" 
    
    Declare Set Address glGenBuffers,   wglGetProcAddress("glGenBuffers")   
    Declare Set Address glBindBuffer,   wglGetProcAddress("glBindBuffer") 
    Declare Set Address glBufferData,   wglGetProcAddress("glBufferData")  
      
    Dim hwnd As DWord
    
    hwnd = TBGL_CreateWindowEx("glDrawArrays example - esc to exit", 600, 600, 32, 0)
    TBGL_ShowWindow
    TBGL_ResetKeyState()
    
    'try float data[] = {0.0, 1.0, 0.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0}
    Global data(9) As Single
    Array Assign data = 1.0, 0.0, 1.0, 0.0, 0.0, -1.0, -1.0, 0.0, 1.0
    
    'Create a New VBO And use the variable id To store the VBO id 
    Dim triangleVBO As DWord
    glGenBuffers(1, triangleVBO) ' //Make the New VBO active
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
    'Upload vertex data To the video device 
    glBufferData(%GL_ARRAY_BUFFER, SizeOf(data), data, %GL_STATIC_DRAW)
    'Make the New VBO active. Repeat here incase changed since initialisation
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
    
    While TBGL_IsWindow(hwnd)
    TBGL_ClearFrame
    
    display
    TBGL_DrawFrame
    If TBGL_GetWindowKeyState( hwnd, %VK_ESCAPE) Then Exit While
    Wend
    
    TBGL_DestroyWindow
    
    '=================================================================================
    
    Sub display()
    
    glMatrixMode(%GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(60.0, 800/600, 1.0, 100.0)
    glMatrixMode(%GL_MODELVIEW)
    'glTranslatef(0, 0, -40)
    glShadeModel(%GL_SMOOTH) 
    glEnable(%GL_DEPTH_TEST)
    gluLookAt( 0, 1, 1,
    0, 1, 0,
    0, 1, 0 ) 
    glclear(%gl_color_buffer_bit)
    
    TBGL_Rotate GetTickCount/30,0,1,0
    
    'Initialise VBO - do only once, at start of program
    'Create a variable To hold the VBO identifier GLuint triangleVBO;
    'Vertices of a triangle (counter-clockwise winding) 
    
    'Draw Triangle from VBO - Do Each time Window, view point Or data changes 
    'Establish its 3 coordinates per vertex With zero stride In This Array; necessary here
    glVertexPointer(3, %GL_FLOAT, 0, NULL)
    'Establish Array Contains vertices (Not normals, colours, texture coords etc)
    glEnableClientState(%GL_VERTEX_ARRAY)
    'Actually Draw the triangle, giving the Number of vertices provided
    glDrawArrays(%GL_TRIANGLES, 1, 9)
    'Force display To be drawn Now
    'glFlush; 
    
    glClear(%GL_COLOR_BUFFER_BIT Or %GL_DEPTH_BUFFER_BIT)
    glClearColor(1, 1, 1, 1)
    
    glDisableClientState(%GL_VERTEX_ARRAY) 
    '**************************************************
    
    End Sub
    
    Last edited by primo; 03-12-2019 at 21:02.

  2. #2
    Super Moderator Petr Schreiber's Avatar
    Join Date
    Aug 2005
    Location
    Brno - Czech Republic
    Posts
    7,083
    Blog Entries
    5
    Rep Power
    725
    Hi Primo,

    thanks for reaching me. I think you must perform the Declare Set Address once you have active OpenGL context, that is, after TBGL_CreateWindowEx.

    Then, I think you need to pass pointer to glBufferData, let's try something like:
    glBufferData(%GL_ARRAY_BUFFER, SizeOf(data), varptr(data(1)), %GL_STATIC_DRAW)
    
    I think that should boost you in the right direction


    Petr
    Learn 3D graphics with ThinBASIC, learn TBGL!
    Windows 10 64bit - Intel Core i5-3350P @ 3.1GHz - 16 GB RAM - NVIDIA GeForce GTX 1050 Ti 4GB

  3. #3
    You are so nice Petr to provide a solution, Thank you.
    yes it works now with the suggestions. following is the new code
    but there is the problem of the triangle colors, it seems the color is sticky and can't be changed . as an example in line 34:
    data(1).red = 1: data(1).green = 0: data(1).blue=0
    if i changed red to 0 and green to 1 i can't get it green and the red stay on. also i can't display the color blue vividly like red or green

    i have noticed that:
    glVertexPointer(3, %GL_FLOAT, 0, NULL)
    glColorPointer(3, %GL_FLOAT, 0, NULL)

    it refer to Null, but i can understand this as preventing the user from accessing the GPU memory directly, and that the moving the data to the GPU is done by glBufferData which we provide it with the address of the data. this is my own imagination and can be wrong
    Uses "tbgl"
    
    #Def %GL_GLEXT_PROTOTYPES
    #Include "%app_includepath%\thinbasic_gl.inc"
    #Include "%app_includepath%\thinbasic_glu.inc"
    #Include "%app_includepath%\thinBasic_GLEXT.inc"
    #Include "%app_includepath%\thinbasic_WGL.inc" 
    
    Type Point3D
      x As Single
      y As Single
      z As Single
      red As Single
      green As Single
      blue As Single
    End Type
      
    
    Dim hwnd As DWord
    
    hwnd = TBGL_CreateWindowEx("VBO example - esc to exit", 600, 600, 32, 0)
    TBGL_ShowWindow 
    Declare Set Address glGenBuffers, wglGetProcAddress("glGenBuffers") 
    Declare Set Address glBindBuffer, wglGetProcAddress("glBindBuffer") 
    Declare Set Address glBufferData, wglGetProcAddress("glBufferData") 
    
    TBGL_ResetKeyState()
    
    Global data(3) As Point3D 
    
    data(1).x = 0: data(1).y = 1: data(1).z = 0
    data(2).x = -1: data(2).y = -1: data(2).z = 0 
    data(3).x = 1: data(3).y = -1: data(3).z = 0 
    data(1).red = 1: data(1).green = 0: data(1).blue=0
    data(2).red = 0: data(2).green = 1: data(2).blue=0
    data(3).red = 0: data(3).green = 0: data(3).blue=1
    
    'Create a New VBO And use the variable id To store the VBO id 
    Global triangleVBO, triangleColor As DWord 
    
    glGenBuffers(1, triangleVBO) ' //Make the New VBO active
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
    glBufferData(%GL_ARRAY_BUFFER, SizeOf(data), VarPtr(data(1).x), %GL_STATIC_DRAW)
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
    
    glGenBuffers( 1, triangleColor )
    glBindBuffer(%GL_ARRAY_BUFFER, triangleColor)
    glBufferData(%GL_ARRAY_BUFFER, SizeOf(data),VarPtr(data(1).red),%GL_STATIC_DRAW)
    
    While TBGL_IsWindow(hwnd)
    TBGL_ClearFrame
    
    display
    TBGL_DrawFrame
    If TBGL_GetWindowKeyState( hwnd, %VK_ESCAPE) Then Exit While
    Wend
    
    TBGL_DestroyWindow
    
    '=================================================================================
    
    Sub display()
    
    glEnable(%GL_DEPTH_TEST)
    glDisable(%GL_CULL_FACE)
    TBGL_Camera( 0, 0, 4, 0, 0, 0 )
    
    glClear(%GL_COLOR_BUFFER_BIT Or %GL_DEPTH_BUFFER_BIT)
    glClearColor(1, 1, 1, 1)
    
    TBGL_Rotate GetTickCount/30,0,1,0
    
    'Establish Array Contains vertices (Not normals, colours, texture coords etc)
    glEnableClientState(%GL_VERTEX_ARRAY)
    glEnableClientState(%GL_COLOR_ARRAY)
    'Establish its 3 coordinates per vertex With zero stride In This Array; necessary here
    glVertexPointer(3, %GL_FLOAT, 0, NULL)
    glColorPointer(3, %GL_FLOAT, 0, NULL)
    'Actually Draw the triangle, giving the Number of vertices provided
    glDrawArrays(%GL_TRIANGLES, 1, 3)
    
    glDisableClientState(%GL_COLOR_ARRAY)
    glDisableClientState(%GL_VERTEX_ARRAY) 
    '**************************************************
    
    End Sub
    
    Last edited by primo; 04-12-2019 at 16:43.

  4. #4
    Quote Originally Posted by primo View Post
    but there is the problem of the triangle colors, it seems the color is sticky and can't be changed . as an example in line 34:
    data(1).red = 1: data(1).green = 0: data(1).blue=0
    if i changed red to 0 and green to 1 i can't get it green and the red stay on. also i can't display the color blue vividly like red or green
    Hi Primo,

    Unless I'm mistaken, changing vertex coordinates does not work either. It looks, from my point of view, that you have to specify how the vertex is stored (vertex format) in the array ( according to the Type Point3D you defined )
    maybe this can help.
    ThinBasic 1.11.6.0 ALPHA - Windows 8.1 x64

  5. #5
    Thanks DirectuX , you are right changing vertex positions not possible, i haven't noticed this. will look more about the subject. this makes the subject more complex.
    Last edited by primo; 04-12-2019 at 20:52.

  6. #6
    Hi Primo,
    According to this documentation, you may want to write it like this :

    Uses "tbgl"
     
    #Def %GL_GLEXT_PROTOTYPES
    #Include "%app_includepath%\thinbasic_gl.inc"
    #Include "%app_includepath%\thinbasic_glu.inc"
    #Include "%app_includepath%\thinBasic_GLEXT.inc"
    #Include "%app_includepath%\thinbasic_WGL.inc" 
     
    Type Point3D
    
      red As Single ' Color first see line #93
      green As Single
      blue As Single
      x As Single
      y As Single
      z As Single
    
    End Type
       
     
    Dim hwnd As DWord
     
    hwnd = TBGL_CreateWindowEx("VBO example - esc to exit", 600, 600, 32, 0)
    TBGL_ShowWindow
    Declare Set Address glGenBuffers, wglGetProcAddress("glGenBuffers") 
    Declare Set Address glBindBuffer, wglGetProcAddress("glBindBuffer") 
    Declare Set Address glBufferData, wglGetProcAddress("glBufferData") 
     
    TBGL_ResetKeyState()
     
    Global data(3) As Point3D 
    
    data(1).x = -1
    data(1).y = 0
    data(1).z = 0
    
    data(2).x = 1
    data(2).y = 0
    data(2).z = 0
    
    data(3).x = 0
    data(3).y = 1
    data(3).z = 0
    
    data(1).red = 1
    data(1).green = 0
    data(1).blue = 0
    
    data(2).red = 0
    data(2).green = 1
    data(2).blue = 0
    
    data(3).red = 0
    data(3).green = 0
    data(3).blue = 1
     
    'Create a New VBO And use the variable id To store the VBO id 
    Global triangleVBO(1) As DWord ' Doc says an array
     
    glGenBuffers(1, triangleVBO) ' //Make the New VBO active
    'Once is sufficient
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO(1))
    glBufferData(%GL_ARRAY_BUFFER, SizeOf(data), VarPtr(data(1).red), %GL_STATIC_DRAW)
    
    While TBGL_IsWindow(hwnd)
    TBGL_ClearFrame
     
    display
    TBGL_DrawFrame
    If TBGL_GetWindowKeyState( hwnd, %VK_ESCAPE) Then Exit While
    Wend
     
    TBGL_DestroyWindow
     
    '=================================================================================
     
    Sub display()
     
    glEnable(%GL_DEPTH_TEST)
    glDisable(%GL_CULL_FACE)
    TBGL_Camera( 0, 0, 4, 0, 0, 0 )
     
    glClear(%GL_COLOR_BUFFER_BIT Or %GL_DEPTH_BUFFER_BIT)
    glClearColor(1, 1, 1, 1)
     
    TBGL_Rotate GetTickCount/30,0,1,0
     
    'Establish Array Contains vertices (Not normals, colours, texture coords etc)
    
    glEnableClientState(%GL_VERTEX_ARRAY)
    glEnableClientState(%GL_COLOR_ARRAY)
    
    glInterleavedArrays(%GL_C3F_V3F, 0, null) ' using TYPE Point3D , you interleave your data
    
    'Actually Draw the triangle, giving the Number of vertices provided
    glDrawArrays(%GL_TRIANGLES, 0, 3) 'notice, this is not TB array : it starts at 0
     
    
    glDisableClientState(%GL_VERTEX_ARRAY)
    glDisableClientState(%GL_COLOR_ARRAY)
    '**************************************************
     
    End Sub
    
    Last edited by DirectuX; 04-12-2019 at 23:21. Reason: add comments to the code
    ThinBasic 1.11.6.0 ALPHA - Windows 8.1 x64

  7. #7
    Thank you very much DirectuX, your solution have kept the project small and simple.
    it seems "glInterleavedArrays" is very nice function and liberating us from the trouble of mixed arrays. you have used also one buffer and glInterleavedArrays does the complex job for servicing the glDrawArrays function.
    there is a big archive in https://github.com/gamedev-net/nehe-opengl
    and i find lesson 45 is about VBO, there is an example using the old delphi, will install it to see the behavior of the first code
    Thank You again

  8. #8
    albeit DirectuX approach https://www.thinbasic.com/community/...ll=1#post95195
    using glInterleavedArrays with glDrawArrays is nice and short, i still thinking why my example does not work, the answer is we should use inside the main loop:
    glEnableClientState(%GL_VERTEX_ARRAY)
    glEnableClientState(%GL_COLOR_ARRAY)
    
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
    glVertexPointer(3, %GL_FLOAT, SizeOf(Point3D), 0)
    
    glBindBuffer(%GL_ARRAY_BUFFER, triangleColor)
    glColorPointer(3, %GL_FLOAT, SizeOf(Point3D), 0)
     
    glDrawArrays(%GL_TRIANGLES, 0, 3)
    
    glDisableClientState(%GL_COLOR_ARRAY)
    glDisableClientState(%GL_VERTEX_ARRAY)
    
    now we can change dimensions and color any time and the color is okay,
    Uses "tbgl"
     
    #Def %GL_GLEXT_PROTOTYPES
    #Include "%app_includepath%\thinbasic_gl.inc"
    #Include "%app_includepath%\thinbasic_glu.inc"
    #Include "%app_includepath%\thinBasic_GLEXT.inc"
    #Include "%app_includepath%\thinbasic_WGL.inc" 
     
    Type Point3D
      x As Single
      y As Single
      z As Single
      red As Single
      green As Single
      blue As Single
    End Type
     
    Dim hwnd As DWord
     
    hwnd = TBGL_CreateWindowEx("glDrawArrays example - esc to exit", 600, 600, 32, 0)
    TBGL_ShowWindow
    TBGL_ResetKeyState()
    
    Declare Set Address glGenBuffers,   wglGetProcAddress("glGenBuffers")   
    Declare Set Address glBindBuffer,   wglGetProcAddress("glBindBuffer") 
    Declare Set Address glBufferData,   wglGetProcAddress("glBufferData")  
        
    Global data(3) As Point3D
    
    data(1).x = 0: data(1).y = 1: data(1).z = 0
    data(2).x = -1: data(2).y = -1: data(2).z = 0 
    data(3).x = 1: data(3).y = -1: data(3).z = 0
    
    data(1).red = 1: data(1).green = 0: data(1).blue=0
    data(2).red = 0: data(2).green = 1: data(2).blue=0
    data(3).red = 0: data(3).green = 0: data(3).blue=1
    
    'msgbox 0, str$(SizeOf(Point3D))
    'Create a New VBO And use the variable id To store the VBO id 
    Dim triangleVBO As DWord 
    Dim triangleColor As DWord
    
    glGenBuffers(1, triangleVBO) ' //Make the New VBO active
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
    'Upload vertex data To the video device 
    glBufferData(%GL_ARRAY_BUFFER, (SizeOf(Point3D)*3), VarPtr(data(1).x), %GL_STATIC_DRAW)
    
    glGenBuffers(2, triangleColor) 
    glBindBuffer(%GL_ARRAY_BUFFER, triangleColor)
    glBufferData(%GL_ARRAY_BUFFER, (SizeOf(Point3D)*3), VarPtr(data(1).red), %GL_STATIC_DRAW)
    
    'msgbox 0, str$(SizeOf(data) )
    While TBGL_IsWindow(hwnd)
    TBGL_ClearFrame
     
    display
    TBGL_DrawFrame
    If TBGL_GetWindowKeyState( hwnd, %VK_ESCAPE) Then Exit While
    Wend
     
    TBGL_DestroyWindow
     
    '=================================================================================
     
    Sub display()
    glEnable(%GL_DEPTH_TEST)
    glDisable(%GL_CULL_FACE)
    TBGL_Camera( 0, 0, 4, 0, 0, 0 )
     
    glClear(%GL_COLOR_BUFFER_BIT Or %GL_DEPTH_BUFFER_BIT) 
    glClearColor(0.5, 0.5, 0.5, 0.5)
    'TBGL_Rotate GetTickCount/30,0,1,0
    'Draw Triangle from VBO - Do Each time Window, view point Or data changes 
    glEnableClientState(%GL_VERTEX_ARRAY)
    glEnableClientState(%GL_COLOR_ARRAY)
    
    glBindBuffer(%GL_ARRAY_BUFFER, triangleVBO)
    glVertexPointer(3, %GL_FLOAT, SizeOf(Point3D), 0)
    
    glBindBuffer(%GL_ARRAY_BUFFER, triangleColor)
    glColorPointer(3, %GL_FLOAT, SizeOf(Point3D), 0) 
    'Actually Draw the triangle, giving the Number of vertices provided
    glDrawArrays(%GL_TRIANGLES, 0, 3)
    'Force display To be drawn Now
    'glFlush 
     
    glDisableClientState(%GL_COLOR_ARRAY)
    glDisableClientState(%GL_VERTEX_ARRAY) 
    '**************************************************
     
    End Sub
    

  9. #9
    Super Moderator Petr Schreiber's Avatar
    Join Date
    Aug 2005
    Location
    Brno - Czech Republic
    Posts
    7,083
    Blog Entries
    5
    Rep Power
    725
    Hi Primo, DirectuX,

    if you want, I could add this interleaved option to GBuffers, what do you think?


    Petr
    Learn 3D graphics with ThinBASIC, learn TBGL!
    Windows 10 64bit - Intel Core i5-3350P @ 3.1GHz - 16 GB RAM - NVIDIA GeForce GTX 1050 Ti 4GB

  10. #10
    Quote Originally Posted by Petr Schreiber View Post
    Hi Primo, DirectuX,

    if you want, I could add this interleaved option to GBuffers, what do you think?


    Petr
    Primo, it's up to you, as I would prefer clearing tbgl issues.
    ThinBasic 1.11.6.0 ALPHA - Windows 8.1 x64

Page 1 of 2 12 LastLast

Similar Threads

  1. Replies: 4
    Last Post: 31-10-2012, 19:31
  2. stencil buffer question
    By largo_winch in forum TBGL module by Petr Schreiber
    Replies: 16
    Last Post: 13-09-2011, 11:41
  3. how to make "smooth openGL objects"?
    By Lionheart008 in forum TBGL General
    Replies: 8
    Last Post: 16-11-2010, 11:34
  4. How to read the keyboard buffer?
    By Michael Hartlef in forum thinBasic General
    Replies: 7
    Last Post: 18-05-2009, 08:47
  5. PowerBasic: 6th post from Bob about objects
    By ErosOlmi in forum Power Basic
    Replies: 2
    Last Post: 08-08-2008, 17:30

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •