我想纹理附加到我的游戏对象,我发现,质地总是裁剪到我的对象的大小,所以如果我设置半径为1f
,我可以看到充满质感,否则我只能看到裁剪中心。在这里你可以看到,我如何创建圈子。我对OpenGL相当陌生,所以我真的不知道我还能向你展示什么。感谢帮助。纹理不进行缩放的OpenGL ES 2.0
private ViewObjectBuilder appendCircle(Geometry.Circle circle, int numPoints, float aspectRatio) {
final int startVertex = mOffset/FLOATS_PER_VERTEX;
final int numVertices = sizeOfCircleInVertices(numPoints);
mVertexData[mOffset] = circle.center.x/aspectRatio;
mTextureData[mOffset++] = (circle.center.x + 1f) * 0.5f;
mVertexData[mOffset] = circle.center.y;
mTextureData[mOffset++] = (circle.center.y + 1f) * 0.5f;
for (int i = 0; i <= numPoints; i++) {
float angleInRadians = ((float) i/(float) numPoints) * ((float) Math.PI * 2f);
final float c = (float) Math.cos(angleInRadians);
final float s = (float) Math.sin(angleInRadians);
mVertexData[mOffset] =
circle.center.x + circle.radius * c/aspectRatio;
mTextureData[mOffset++] =
(circle.center.x + circle.radius * c + 1f) * 0.5f;
mVertexData[mOffset] = circle.center.y + circle.radius * s;
mTextureData[mOffset++] =
(circle.center.y + circle.radius * s + 1f) * 0.5f;
}
mDrawList.add(() -> glDrawArrays(GL_TRIANGLE_FAN, startVertex, numVertices));
return this;
}
它不清楚,你能解释一下吗? –
后来我想旋转对象和纹理也。如果我在一个周期内进行计算,它们如何独立? –
传递给它的半径与对象和视图相同,我将其更改为制作截图。公式为: (center.x + radius * c + 1f)* 0.5f;所以如果半径是0.25,它不能是1,中心是(0,0) –