android 透明三角形,Android OpenGL - 三角形条带中三角形的ES alpha透明度不同?

我有一个非常奇怪的问题,希望很容易解决。

我画一个四边形作为三角形条。它在条带中只有2个三角形,我将包含alpha通道的纹理应用于它。

对于其中一个三角形,似乎alpha很好并且完全符合我的要求但是对于第一个三角形,它看起来好像alpha是1.0或0.0,而不是正确的中间值。

可能是什么导致了这个?我是否正确地认为那是问题所在?我将附上一张图片,以便人们可以看到我的意思:

奇怪的是,它被绘制为一个三角形数组和1个纹理,因此我不确定如何更改设置或以某种方式影响纹理。我想也许三角形是以不同的旋转方式绘制的,但它们都是逆时针的。

代码明智地绘制如下:

gl.glBindTexture(GL10.GL_TEXTURE_2D, texturePointer);

//Enable the vertices buffer for writing and to be used during our rendering

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

//Specify the location and data format of an array of vertex coordinates to use when rendering

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);

//Enable the texture buffer

gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);

gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, indices.length, GL10.GL_UNSIGNED_SHORT, indexBuffer);

如果我诚实的话,我有点难过。

编辑:再看一下这就好像其中一个三角形被纹理化了两次,所以alpha明显加起来并且它得到了更多的应用。这可能意味着我的三角形条带有问题。我像这样制作条带(开始用手写出来检查..):

//Top left

vertices[vertPlace++] = 0.0f;

vertices[vertPlace++] = height;

vertices[vertPlace++] = 0.0f;

//Bottom left

vertices[vertPlace++] = 0.0f;

vertices[vertPlace++] = 0.0f;

vertices[vertPlace++] = 0.0f;

//top right

vertices[vertPlace++] = width;

vertices[vertPlace++] = height;

vertices[vertPlace++] = 0.0f;

//Bottom right

vertices[vertPlace++] = width;

vertices[vertPlace++] = 0.0f;

vertices[vertPlace++] = 0.0f;

//Now set the indices

indices[indiPlace++] = (short)0;

indices[indiPlace++] = (short)1;

indices[indiPlace++] = (short)2;

indices[indiPlace++] = (short)3;

//Top Left

textureCoords[textPlace++] = 0.0f;

textureCoords[textPlace++] = 1.0f;

///Bottom left

textureCoords[textPlace++] = 0.0f;

textureCoords[textPlace++] = 0.0f;

//Top right

textureCoords[textPlace++] = 1.0f;

textureCoords[textPlace++] = 1.0f;

//Bottom right

textureCoords[textPlace++] = 1.0f;

textureCoords[textPlace++] = 0.0f;

不知怎的,我在那里做错了什么,我只是看不到它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值