我想紋理附加到我的遊戲對象,我發現,質地總是裁剪到我的對象的大小,所以如果我設置半徑爲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) –