Java 如何在AndEngine矩形类中实现glColorPointer
有没有人可以分享一个关于如何实现GradiEnlectAngle的例子,每个顶点都有不同的颜色 我尝试使用类似顶点选择硬件的方法从GL10通过浮点缓冲区和GL11调用glColorPointer,但两种方法都失败了Java 如何在AndEngine矩形类中实现glColorPointer,java,android,opengl-es,colors,andengine,Java,Android,Opengl Es,Colors,Andengine,有没有人可以分享一个关于如何实现GradiEnlectAngle的例子,每个顶点都有不同的颜色 我尝试使用类似顶点选择硬件的方法从GL10通过浮点缓冲区和GL11调用glColorPointer,但两种方法都失败了 在AndEngine论坛上我找到了,但它不起作用,不过它可能会帮助别人找到更好的解决方案。这个例子对你不起作用,因为作者并没有展示负责设置顶点的代码 下面是我的示例(虽然很长,但这是opengl…) 注意-请记住正确设置视口 public static void drawGradie
在AndEngine论坛上我找到了,但它不起作用,不过它可能会帮助别人找到更好的解决方案。这个例子对你不起作用,因为作者并没有展示负责设置顶点的代码 下面是我的示例(虽然很长,但这是opengl…) 注意-请记住正确设置视口
public static void drawGradientRectangle(GL10 gl, float centerX, float centerY,
float width, float height) {
gl.glPushMatrix();
gl.glDisable(GL10.GL_TEXTURE_2D);
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); //just in case if you have not done that before
gl.glFrontFace(GL10.GL_CCW); //Set the face
gl.glTranslatef(centerX, centerY, 0);
if (width != 1 || height != 1) {
gl.glScalef(width, height, 1);
}
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, GLDrawConstants.vertexBuffer0_5);
gl.glColorPointer(4, GL10.GL_FLOAT, 0, GLDrawConstants.gradOrangeWhiteBuffer);
// Draw the vertices as triangle strip
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glPopMatrix();
}
GLD类别:
public class GLDrawConstants {
public static final FloatBuffer gradOrangeWhiteBuffer;
public static final FloatBuffer vertexBuffer0_5;
private static final float vertices0_5[] = {
-0.5f, -0.5f,// Bottom Left
0.5f, -0.5f,// Bottom right
-0.5f, 0.5f,// Top Left
0.5f, 0.5f// Top Right
};
private static final float gradOrangeWhiteColor[] = {
255/255f, 239/255f, 196/255f, 0f, // Bottom Left
255/255f, 239/255f, 196/255f, 0f, // Bottom right
250/255f, 200/255f, 62/255f, 0.3f, // Top Left
250/255f, 200/255f, 62/255f, 0.3f // Top Right
};
static {
gradOrangeWhiteBuffer = WDUtils.floatBuffer(gradOrangeWhiteColor);
vertexBuffer0_5 = WDUtils.floatBuffer(vertices0_5);
}
}
WDUtils类:
public class WDUtils {
/**
* Make a direct NIO FloatBuffer from an array of floats
*
* @param arr
* The array
* @return The newly created FloatBuffer
*/
public static final FloatBuffer floatBuffer(float[] arr) {
ByteBuffer bb = ByteBuffer.allocateDirect(arr.length * 4);
bb.order(ByteOrder.nativeOrder());
FloatBuffer fb = bb.asFloatBuffer();
fb.put(arr);
fb.position(0);
return fb;
}
}
或者您使用(或后端口)来自
GLES2 AnchorCenter
分支的类,它为您提供了一个超级易于使用且功能丰富的API,而无需担心OpenGL。=) 您得到了哪些具体的错误/异常?是元素没有显示,还是编译/运行时出现错误?一切都是黑色的,没有颜色…@michael我不知道如何在这个网站上发送PM,但你能帮我打个招呼吗?谢谢你的回答,但你确定这在AndEngine中会行得通吗,因为这是我的引擎问题,我在opengl es中找到了许多这样做的例子,但没有一个可以转移到具体的安德林。这是我的问题:如何在AndEngine中实现它,而不是如何在一般情况下实现它。AndEngine使用OpenGL,所以它应该在那里工作,只需进行非常小的调整。你试过了吗?我试过了,它工作了,谢谢,我想之前我一直在用第一个参数3而不是4调用glColorPointer,它通常会使一切都不顺利。Thanks@michael请分享您的AndEngine代码示例。您可以将其粘贴到问题中,如下面的更新和代码。它将帮助我和社区。thnx