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 <[email protected]> escribió:

De: Jose Gregoris <[email protected]>
Asunto: [clubSmalltalk] Dolphin api call dword* ?
Para: "Club smaltalk" <[email protected]>
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 [email protected]

To unsubscribe from this group, send email to 
[email protected]

 

http://www.clubSmalltalk.org


      

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a