Fixed the cone size-problem

This commit is contained in:
Agnes Heppich
2019-01-18 14:18:13 -05:00
parent 9bab7fb6c4
commit a3432f1484
4 changed files with 20 additions and 15 deletions

View File

@@ -292,16 +292,15 @@ void RenderableCone::render(const RenderData& data, RendererTasks&) {
_vertexLateralSurfaceArray.data(),
GL_DYNAMIC_DRAW
);
glDisable(GL_CULL_FACE);
updateVertexAttributes();
//glFrontFace(GL_CW);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawArrays(
GL_TRIANGLE_FAN,
0,
_count
);
// glFrontFace(GL_CCW);
//Base part of the cone
glBindVertexArray(_baseInfo._vaoID);
glBindBuffer(GL_ARRAY_BUFFER, _baseInfo._vBufferID);
@@ -311,15 +310,15 @@ void RenderableCone::render(const RenderData& data, RendererTasks&) {
_vertexBaseArray.data(),
GL_STATIC_DRAW
);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glDisable(GL_CULL_FACE);
updateVertexAttributes();
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawArrays(
GL_TRIANGLE_FAN,
0,
_count
);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
unbindGL();
if (usingFramebufferRenderer) {
@@ -358,13 +357,15 @@ void RenderableCone::update(const UpdateData& data) {
glm::dvec3 baseCenterPosition;
int numBaseVertices = _resolution;
double height = _height * _unit;
double angle = glm::radians(float(_angle));
angle = angle / 2; //Half of the full cone angle to get a right -angled triangle
angle = angle / 2.0; //Half of the full cone angle to get a right -angled triangle
double radius = height * tan(angle);
float angleIncrement = glm::radians(360.0 / numBaseVertices);
glm::dvec3 e0 = glm::cross(_baseCenterDirection, glm::dvec3(1.0, 0.0, 0.0));
glm::dvec3 e1 = glm::cross(_baseCenterDirection, e0);
glm::dvec3 e0 = glm::normalize(glm::cross(_baseCenterDirection, glm::dvec3(1.0, 0.0, 0.0)));
glm::dvec3 e1 = glm::normalize(glm::cross(_baseCenterDirection, e0));
if (_directionIsReversed) {
baseCenterPosition = _apexPosition + _baseCenterDirection * height;