fix uv mapping for the circle shape
This commit is contained in:
@@ -94,7 +94,7 @@ void Plane::create_impl(float w, float h, int div, GLushort *idx, Shape::vertex_
|
||||
*idx++ = 0; // A
|
||||
}
|
||||
|
||||
void Circle::create_impl(float radius, int div, GLushort* idx, vertex_t* vertices, kUVMapping map)
|
||||
void Circle::create_impl(float radius, int div, GLushort* idx, vertex_t* vertices)
|
||||
{
|
||||
count[0] = div * 3;
|
||||
count[1] = div * 2;
|
||||
@@ -109,7 +109,7 @@ void Circle::create_impl(float radius, int div, GLushort* idx, vertex_t* vertice
|
||||
float theta = (float)i / div * (float)M_PI * 2.f;
|
||||
glm::vec2 uv = { sinf(theta), cosf(theta) };
|
||||
v.pos = glm::vec4(uv * radius, 0, 1);
|
||||
v.uvs = (map == kUVMapping::Planar) ? (uv * 0.5f + 0.5f) : glm::vec2((float)i / div, 1.f);
|
||||
v.uvs = uv * 0.5f + 0.5f;
|
||||
vertices[i+1] = v;
|
||||
|
||||
*pidx++ = 0;
|
||||
@@ -120,7 +120,7 @@ void Circle::create_impl(float radius, int div, GLushort* idx, vertex_t* vertice
|
||||
*pidx2++ = 1 + ((i+1) % div);
|
||||
}
|
||||
vertices[0].pos = { 0, 0, 0, 1 };
|
||||
vertices[0].uvs = (map == kUVMapping::Planar) ? glm::vec2(0.5f, 0.5f) : glm::vec2(0.f, 0.f);
|
||||
vertices[0].uvs = { 0.5f, 0.5f };
|
||||
}
|
||||
|
||||
void Circle::create_impl(float radius_out, float radius_in, int div, GLushort* idx, vertex_t* vertices, kUVMapping map)
|
||||
@@ -153,9 +153,12 @@ void Circle::create_impl(float radius_out, float radius_in, int div, GLushort* i
|
||||
*pidx++ = i*2+1; // B
|
||||
*pidx++ = ((i+1)*2+1) % (div*2); // C
|
||||
|
||||
*pidx++ = i*2; // A
|
||||
*pidx++ = ((i+1)*2+1) % (div*2); // C
|
||||
*pidx++ = ((i+1)*2) % (div*2); // D
|
||||
if (radius_in != 0.f)
|
||||
{
|
||||
*pidx++ = i * 2; // A
|
||||
*pidx++ = ((i + 1) * 2 + 1) % (div * 2); // C
|
||||
*pidx++ = ((i + 1) * 2) % (div * 2); // D
|
||||
}
|
||||
|
||||
*pidx2++ = i*2; // A
|
||||
*pidx2++ = ((i+1)*2) % (div*2); // D
|
||||
|
||||
Reference in New Issue
Block a user