On 2 July 2013 23:04, kilon <thekilon@yahoo.co.uk> wrote:
Thank you Igor for the clarifications, the reason why I prefer using the nativeboost methods is because :
a) I was not sure if smalltalk types map correctly to C types and which Smalltalk types correspond to which C types
well, there's no such thing as 'types' in smalltalk :)
b) many opengl functions ask for the address of the value and the value itself. And I have no clue how to obtain memory addresses of smalltalk types.
you don't. The value can have a type, but address don't. Address is just a location in memory, where the value(s) (could be) stored. For any function which takes a pointer, you can pass an instance of ByteArray, or instance of NBExternalAddress to it. In first case, a pointer to first byte of bytearray will be passed to function, in second one , the value of address. So, you either allocate buffer in object memory, or external memory.. fill it with whatever it needs and pass to function. Does that sounds simple enough?
c) I was not sure whether Pharo VM or garbage collector would move my data making my pointers invalid.
But if you say its ok, I trust you. When exactly is ok to use smalltalk types ?
if you pass a pointer to something in object memory into function, make sure GC cannot move the object while function uses/accessing its contents. and it is only for pointers. For arguments which is passed by value (ints/floats), you don't have to care.
-- View this message in context: http://forum.world.st/Understanding-NBOpenGL-tp4686514p4696955.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
-- Best regards, Igor Stasenko.