Dolphin api call dword* ?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Dolphin api call dword* ?

Jose Gregoris
Hola Gente

Tengo un problema con la demo de openGL , el tema esta en que las texturas no son borradas adecuadamente.
Lo primero que quiero ver es si estoy definiendo bien los tipos de la función.

Para crear una textura se usa esto:

OpenGLLibrary>>glGenTextures: n textures: textures
    " Generate texture names 
void glGenTextures(    GLsizei      n, GLuint *      textures);

 n:             Specifies the number of texture names to be generated.               
textures:  Specifies an array in which the generated texture names are stored."

    <stdcall: void glGenTextures sdword dword*>
    ^self invalidCall

Para borrar una textura se usa esto:

OpenGLLibrary>>glDeleteTextures: n textures: textures
    " Delete named textures
 void glDeleteTextures(    GLsizei      n,     const GLuint *      textures);"

    <stdcall: void glDeleteTextures sdword dword*>
    ^self invalidCall

Donde GLuint* es:

typedef unsigned int GLuint;

Cuando creo una textura uso algo así:

|textureObject|
textureObject:= DWORD new.
y le paso esto a la función así:

OpenGLLibrary>>generateTextureNameFor: textureObject
    " Generate texture name for textureObject"
 
    self
        glGenTextures: 1 textures: textureObject yourAddress ;
        checkError

Luego para borrar así:

deleteTexture: textureIndex
    "Delete a texture"

    self
        glDeleteTextures: 1 textures: textureIndex yourAddress  ;
        checkError


Primero es correcto  el tipo de dato que use ?
Es correcto pasar la dirección ?
Encontré que  en algunos lugares se pasa la dirección y en otros directamente .

ES muy raro pues algunas las borra y otras no !

saludos kiko


 

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
Reply | Threaded
Open this post in threaded view
|

Re: Dolphin api call dword* ?

Jose Gregoris
Hola

Evidentemente es un problema que genero desde dolphin, pues en C++ anda bien.
El tema es que tipo defino desde dolphin para las funciones.

Buscando ejemplos   en dolphin encuentro que hay una variedad de formas.

GdiplusLibrary>>gdipGetLineSpacing: family style: style lineSpacing: lineSpacing
    "Invoke the GdipGetLineSpacing() function of the module wrapped by the receiver.

        GpStatus __stdcall GdipGetLineSpacing(
            [in]PGpFontFamily family,
            int style,
            UINT16* LineSpacing);"

    <stdcall: sdword GdipGetLineSpacing  handle sdword word*>
    ^self invalidCall

Y se lo pasan así:

lineSpacing
    "Answer the vertical distance between the base lines of two consecutive lines of text."

    | status lineSpacing |
    lineSpacing := DWORD new.
    (status := GdiplusLibrary default
                gdipGetLineSpacing: self asParameter
                style: 0
                lineSpacing: lineSpacing) = Ok
        ifFalse: [GdiplusError signal: 'GdipGetLineSpacing failed' with: status].
    ^lineSpacing asInteger

Usan un DWORD para un word !! y lo pasan de una, sin  #yourAddress.

Trate así y nada .

saludos

--- El mié 8-sep-10, Jose Gregoris <[hidden email]> escribió:

De: Jose Gregoris <[hidden email]>
Asunto: [clubSmalltalk] Dolphin api call dword* ?
Para: "Club smaltalk" <[hidden email]>
Fecha: miércoles, 8 de septiembre de 2010, 17:07

Hola Gente

Tengo un problema con la demo de openGL , el tema esta en que las texturas no son borradas adecuadamente.
Lo primero que quiero ver es si estoy definiendo bien los tipos de la función.

Para crear una textura se usa esto:

OpenGLLibrary>>glGenTextures: n textures: textures
    " Generate texture names 
void glGenTextures(    GLsizei      n, GLuint *      textures);

 n:             Specifies the number of texture names to be generated.               
textures:  Specifies an array in which the generated texture names are stored."

    <stdcall: void glGenTextures sdword dword*>
    ^self invalidCall

Para borrar una textura se usa esto:

OpenGLLibrary>>glDeleteTextures: n textures: textures
    " Delete named textures
 void glDeleteTextures(    GLsizei      n,     const GLuint *      textures);"

    <stdcall: void glDeleteTextures sdword dword*>
    ^self invalidCall

Donde GLuint* es:

typedef unsigned int GLuint;

Cuando creo una textura uso algo así:

|textureObject|
textureObject:= DWORD new.
y le paso esto a la función así:

OpenGLLibrary>>generateTextureNameFor: textureObject
    " Generate texture name for textureObject"
 
    self
        glGenTextures: 1 textures: textureObject yourAddress ;
        checkError

Luego para borrar así:

deleteTexture: textureIndex
    "Delete a texture"

    self
        glDeleteTextures: 1 textures: textureIndex yourAddress  ;
        checkError


Primero es correcto  el tipo de dato que use ?
Es correcto pasar la dirección ?
Encontré que  en algunos lugares se pasa la dirección y en otros directamente .

ES muy raro pues algunas las borra y otras no !

saludos kiko


 

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org

 

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org