Je veux juste dessiner une bordure rectangulaire simple, un rectangle rempli fonctionne bien mais je ne trouve pas un moyen facile de dessiner une bordure ici est ma classe Rectangle.dessiner la bordure rectangulaire de base dans OpenGL pour android
est Ci-dessous ma classe rectangle:
package{
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;
import javax.microedition.khronos.opengles.GL10;
public class Rectangle {
private float vertices[]={
-0.5f,0.5f, 0.0f,
-0.5f,-0.5f,0.0f,
0.5f,-0.5f,0.0f,
0.5f,0.5f,0.0f
};
// The colors mapped to the vertices.
float[] colors = {
1f, 0f, 0f, 1f, // vertex 0 red
1f, 0f, 0f, 1f, // vertex 1 green
1f, 0f, 0f, 1f, // vertex 2 blue
1f, 0f, 0f, 1f, // vertex 3 magenta
};
private short[] indices = {0,1,2,0,2,3};
private FloatBuffer vertexBuffer;
private ShortBuffer indexBuffer;
// Our color buffer.
private FloatBuffer colorBuffer;
public Rectangle(){
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
vertexBuffer = vbb.asFloatBuffer();
vertexBuffer.put(vertices);
vertexBuffer.position(0);
ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * 2);
ibb.order(ByteOrder.nativeOrder());
indexBuffer = ibb.asShortBuffer();
indexBuffer.put(indices);
indexBuffer.position(0);
// float has 4 bytes, colors (RGBA) * 4 bytes
ByteBuffer cbb = ByteBuffer.allocateDirect(colors.length * 4);
cbb.order(ByteOrder.nativeOrder());
colorBuffer = cbb.asFloatBuffer();
colorBuffer.put(colors);
colorBuffer.position(0);
}
public void draw(GL10 gl){
gl.glFrontFace(GL10.GL_CCW);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glCullFace(GL10.GL_BACK);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
// Enable the color array buffer to be used during rendering.
gl.glEnableClientState(GL10.GL_COLOR_ARRAY); // NEW LINE ADDED.
// Point out the where the color buffer is.
gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuffer); // NEW LINE ADDED.
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_SHORT, indexBuffer);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisable(GL10.GL_CULL_FACE);
}
}
bien que vous voyez c'est le problème que je veux dessiner une bordure rectangulaire sur un aperçu de la caméra, l'idée est simple comme un rectangle de focus dans l'application caméra, je veux dessiner une région sûre pour l'utilisateur de placer leur reçu à l'intérieur et recadrer cette zone – user2641657
Quel est le problème? Vous connaissez les coordonnées des coins de votre rectangle pour votre tirage actuel, remplacez simplement cela par un tirage de GL_LINES plutôt que par GL_TRIANGLES (vous devrez corriger le tampon d'index pour lier les bons points en tant que lignes, car cela sera différent à la connectivité du triangle). – solidpixel