Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Utilisez les extensions OpenGL en VB6 & VBA


Sujet :

VB 6 et antérieur

  1. #1
    Responsable Access

    Bonjour à tous!

    Voici un article sur la programmation des extensions OpenGL, en VB6/VBA

    Cet article décrit l'utilisation de quelques extensions fréquemment utilisées :
    - Les VBO (vertex buffer objects) pour améliorer les performances
    - Les textures 3D pour réaliser des textures continue sur un volume
    - Les shaders, largement utilisés pour programmer des effets graphiques

    Les exemples développés sont assez simples, mais ouvrent la porte à de nombreuses possibilités en 3D sous Visual Basic.

    Vous pouvez ajoutez vos commentaires sur cet articles à la suite de ce message.


  2. #2
    Candidat au Club
    VB6 & Shaders
    Bonjour,

    Je recherche a utiliser les sharders en VB6 avec des textures. J'ai fais quelques tests mais impossible de récupérer une texture dans le fragment shaders.
    Je n'arrive pas "à faire passer" la texture pour la retrouver dans la variable "uniform sample2D texture" afin d'utiliser ses pixels.

    Basé sur le tuto: http://arkham46.developpez.com/articles/office/vbaopenglext/?page=page_4#LVIII, j'ai créé un programme Fragment, compilé et lié.
    Il fonctionne puisque j'arrive à afficher des pixels unitaire avec.

    J'ai essayé de passer la texture stockée dans "ldata" (du tuto) mais je n'y arrive pas. J'ai utilisé ces quelques lignes pour injecter la texture:


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim TextureHandle As Long
     TextureHandle = glGetUniformLocation(gProgram, "texture")
     glEnableVertexAttribArray TextureHandle
     glVertexAttribPointer TextureHandle, 3, GL_RGB, False, 0, ByteToFloat(ldata)


    Avec ByteToFloat:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Public Function ByteToFloat(InArray() As Byte) As Single
     
     'Convert byte array to IEEE float
     
     Dim PtrSource1 As Long
     Dim PtrSource2 As Long
     Dim PtrSource3 As Long
     Dim PtrSource4 As Long
     Dim PtrDest As Long
     Dim DestVal As Single
     
     'Memory location of float value
     PtrDest = VarPtr(DestVal)
     
     PtrSource1 = VarPtr(InArray(0))
     PtrSource2 = VarPtr(InArray(1))
     PtrSource3 = VarPtr(InArray(2))
     PtrSource4 = VarPtr(InArray(3))
     
     CopyMemory ByVal PtrDest, ByVal PtrSource1, 1
     CopyMemory ByVal PtrDest + 1, ByVal PtrSource2, 1
     CopyMemory ByVal PtrDest + 2, ByVal PtrSource3, 1
     CopyMemory ByVal PtrDest + 3, ByVal PtrSource4, 1
     
     ByteToFloat = CDbl(DestVal)
     
     End Function


    Auriez-vous une idée ? merci d'avance pour votre aide.

  3. #3
    Candidat au Club
    J'ai trouvé mon erreur: il faut passer la texture comme une texture "normal" (cf tuto précédant) et la sélectionner également normalement afin qu'elle puisse être utilisée dans le sharders.
    Il ne faut donc pas l'importer à travers un pointer...

###raw>template_hook.ano_emploi###