2010-11-29 6 views
1

Ich entwickle eine Java-Anwendung, die einige jni-Aufrufe verwendet.JNI: Äquivalent von uint * vboIds in Java

Ich habe auf C-Code die folgende Variable:

GLuint *vboIds; 

Ich mag diese Variable, um von Java zu C, aber ich weiß nicht, wie es in Java zu erklären.

GLuint entspricht einem unsigned int.

Also, ich denke, das die entsprechende Deklaration in Java ist:

int[] vboIds; 

Was denken Sie?

Dank

+1

Scheint korrekt zu sein. Hast du deine Lösung versucht? –

+0

Wenn Sie versuchen, OpenGL-Dinge in Java zu tun: Es könnte einfacher sein, eine der vorhandenen Java OpenGL-Bindungen zu verwenden, siehe http://jogamp.org/ oder http://www.lwjgl.org/ – Jesper

+0

@Vladimir Iwanow: Es ist richtig. – VansFannel

Antwort

1

Sie sagen nicht explizit, ob es ein Zeiger auf einen einzelnen Wert oder ein Array sein soll, aber ich würde denke, es ist wahrscheinlich ein Array aus der Namensgebung und was Sie denken zu tun mit dem Mapping (es sollte irgendwo auch ein Parameter sein, der die Länge des Arrays angibt; diese beiden bilden das gleiche Argument auf der Java-Seite ab, da Java-Arrays ihre eigenen Längen kennen). Sie haben wahrscheinlich Recht, eine int als die in der Regel die gleiche Größe wie eine C int zu verwenden - nicht, dass das eine Garantie ist, überhaupt nicht, aber kaum Maschinenarchitekturen sind heutzutage anders - aber Sie müssen aufpassen für die Tatsache, dass alle numerischen Typen von Java signiert sind. Das ist meistens kein Problem, vorausgesetzt, Sie sind ein wenig vorsichtig mit Arithmetik (außer Addition, Subtraktion und Linksverschiebung, die offensichtlich funktionieren) und Vergleichen.

+0

vboIds enthält einen oder zwei Werte. – VansFannel

+0

@Vans: Trotzdem gilt mein Rat immer noch. Sie scheinen sich den Dingen vernünftig zu nähern; Das Mapping, das Sie ausgewählt haben, scheint zumindest für Ihren ersten Versuch das richtige zu sein, da es hinsichtlich der allgemeinen Datentypen und Größen am nächsten ist. –