From 20c18c6f9b5710d6c86e766aa5fd406fd5f6ec97 Mon Sep 17 00:00:00 2001 From: Vulpovile Date: Thu, 4 Mar 2021 13:07:04 -0800 Subject: [PATCH 1/2] New lighting, new spheres --- Application.cpp | 18 ++++- PartInstance.cpp | 173 +++++------------------------------------------ main.cpp | 1 - 3 files changed, 31 insertions(+), 161 deletions(-) diff --git a/Application.cpp b/Application.cpp index e41f7df..f4f5a7f 100644 --- a/Application.cpp +++ b/Application.cpp @@ -137,9 +137,9 @@ Application::Application(HWND parentWindow) : _propWindow(NULL) { //: GApp(setti webBrowser = new IEBrowser(_hwndToolbox); SetWindowLongPtr(_hwndToolbox,GWL_USERDATA+1,(LONG)webBrowser); - //webBrowser->navigateSyncURL(L"http://androdome.com/res/ClientToolbox.php"); + webBrowser->navigateSyncURL(L"http://androdome.com/res/ClientToolbox.php"); + //navigateToolbox(GetFileInPath("/content/page/controller.html")); //navigateToolbox(GetFileInPath("/content/page/controller.html")); - navigateToolbox(GetFileInPath("/content/page/surface.html")); } @@ -643,6 +643,7 @@ void Application::onGraphics(RenderDevice* rd) { } LightingParameters lighting(G3D::toSeconds(2, 00, 00, PM)); + lighting.ambient = Color3(0.6F,0.6F,0.6F); renderDevice->setProjectionAndCameraMatrix(*cameraController.getCamera()); // Cyan background @@ -659,8 +660,19 @@ void Application::onGraphics(RenderDevice* rd) { renderDevice->setShadeMode(RenderDevice::SHADE_SMOOTH); renderDevice->setAmbientLightColor(Color3(1,1,1)); - renderDevice->setLight(0, GLight::directional(lighting.lightDirection, lighting.lightColor)); + renderDevice->setLight(0, GLight::directional(lighting.lightDirection, lighting.lightColor, true, true)); renderDevice->setAmbientLightColor(lighting.ambient); + renderDevice->setShininess(70); + renderDevice->setSpecularCoefficient(Color3(0.1F, 0.1F, 0.1F)); + + //float lightAmbient[] = { 0.5F, 0.6F, 0.9F, 1.0F }; + //float lightDiffuse[] = { 0.6F, 0.4F, 0.9F, 1.0F }; + //float lightSpecular[] = { 0.8F, 0.6F, 1.0F, 1.0F }; + + //glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, lightAmbient); + //glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, lightDiffuse); + //glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, lightSpecular); + //glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 70); rd->beforePrimitive(); CoordinateFrame forDraw = rd->getObjectToWorldMatrix(); diff --git a/PartInstance.cpp b/PartInstance.cpp index 1578823..13d63bf 100644 --- a/PartInstance.cpp +++ b/PartInstance.cpp @@ -478,6 +478,9 @@ bool PartInstance::isUniqueVertex(Vector3 pos) //int rings = 15; //int sectors = 15; void PartInstance::render(RenderDevice* rd) { + int sectorCount = 12; + int stackCount = 12; + float radius = 0.5F; //if(nameShown) //postRenderStack.push_back(this); if (changed) @@ -493,161 +496,17 @@ void PartInstance::render(RenderDevice* rd) { { case Enum::Shape::Ball: { - /*float radius = renderSize.y / 2; - float const R = 1./(float)(rings-1); - float const S = 1./(float)(sectors-1); - int r, s; - double M_PI = pi(); - double M_PI_2 = M_PI/2; - - _vertices.resize(rings * sectors * 3); - _normals.resize(rings * sectors * 3); - std::vector::iterator v = _vertices.begin(); - std::vector::iterator n = _normals.begin(); - //std::vector::iterator t = texcoords.begin(); - for(r = 0; r < rings; r++) for(s = 0; s < sectors; s++) { - float const y = sin( -M_PI_2 + M_PI * r * R ); - float const x = cos(2*M_PI * s * S) * sin( M_PI * r * R ); - float const z = sin(2*M_PI * s * S) * sin( M_PI * r * R ); - - - *v++ = x * radius; - *v++ = y * radius; - *v++ = z * radius; - - *n++ = x; - *n++ = y; - *n++ = z; - } - - _indices.resize(rings * sectors * 4); - std::vector::iterator i = _indices.begin(); - for(r = 0; r < rings; r++) for(s = 0; s < sectors; s++) { - *i++ = r * sectors + s; - *i++ = r * sectors + (s+1); - *i++ = (r+1) * sectors + (s+1); - *i++ = (r+1) * sectors + s; - } - //*/ - - - float sphFace = this->size.y / 3.14159F; - // Front - addSmoothTriangle(Vector3(renderSize.x-sphFace,renderSize.y-sphFace,renderSize.z), - Vector3(-renderSize.x+sphFace,-renderSize.y+sphFace,renderSize.z), - Vector3(renderSize.x-sphFace,-renderSize.y+sphFace,renderSize.z) - ); - - addSmoothTriangle(Vector3(-renderSize.x+sphFace,renderSize.y-sphFace,renderSize.z), - Vector3(-renderSize.x+sphFace,-renderSize.y+sphFace,renderSize.z), - Vector3(renderSize.x-sphFace,renderSize.y-sphFace,renderSize.z) - ); - - // Top - addSmoothTriangle(Vector3(renderSize.x-sphFace,renderSize.y,renderSize.z-sphFace), - Vector3(renderSize.x-sphFace,renderSize.y,-renderSize.z+sphFace), - Vector3(-renderSize.x+sphFace,renderSize.y,renderSize.z-sphFace) - ); - addSmoothTriangle(Vector3(-renderSize.x+sphFace,renderSize.y,renderSize.z-sphFace), - Vector3(renderSize.x-sphFace,renderSize.y,-renderSize.z+sphFace), - Vector3(-renderSize.x+sphFace,renderSize.y,-renderSize.z+sphFace) - ); - - // Back - addSmoothTriangle(Vector3(renderSize.x-sphFace,renderSize.y-sphFace,-renderSize.z), - Vector3(renderSize.x-sphFace,-renderSize.y+sphFace,-renderSize.z), - Vector3(-renderSize.x+sphFace,-renderSize.y+sphFace,-renderSize.z) - ); - addSmoothTriangle(Vector3(renderSize.x-sphFace,renderSize.y-sphFace,-renderSize.z), - Vector3(-renderSize.x+sphFace,-renderSize.y+sphFace,-renderSize.z), - Vector3(-renderSize.x+sphFace,renderSize.y-sphFace,-renderSize.z) - ); - - // Bottom - addSmoothTriangle(Vector3(renderSize.x-sphFace,-renderSize.y,-renderSize.z+sphFace), - Vector3(renderSize.x-sphFace,-renderSize.y,renderSize.z-sphFace), - Vector3(-renderSize.x+sphFace,-renderSize.y,renderSize.z-sphFace) - ); - addSmoothTriangle(Vector3(-renderSize.x+sphFace,-renderSize.y,renderSize.z-sphFace), - Vector3(-renderSize.x+sphFace,-renderSize.y,-renderSize.z+sphFace), - Vector3(renderSize.x-sphFace,-renderSize.y,-renderSize.z+sphFace) - ); - // Left - addSmoothTriangle(Vector3(-renderSize.x,renderSize.y-sphFace,-renderSize.z+sphFace), - Vector3(-renderSize.x,-renderSize.y+sphFace,renderSize.z-sphFace), - Vector3(-renderSize.x,renderSize.y-sphFace,renderSize.z-sphFace) - ); - addSmoothTriangle(Vector3(-renderSize.x,-renderSize.y+sphFace,renderSize.z-sphFace), - Vector3(-renderSize.x,renderSize.y-sphFace,-renderSize.z+sphFace), - Vector3(-renderSize.x,-renderSize.y+sphFace,-renderSize.z+sphFace) - ); - - // Right - addSmoothTriangle(Vector3(renderSize.x,renderSize.y-sphFace,renderSize.z-sphFace), - Vector3(renderSize.x,-renderSize.y+sphFace,renderSize.z-sphFace), - Vector3(renderSize.x,renderSize.y-sphFace,-renderSize.z+sphFace) - ); - addSmoothTriangle(Vector3(renderSize.x,-renderSize.y+sphFace,-renderSize.z+sphFace), - Vector3(renderSize.x,renderSize.y-sphFace,-renderSize.z+sphFace), - Vector3(renderSize.x,-renderSize.y+sphFace,renderSize.z-sphFace) - ); - - - // Bevel Top Front - makeSmoothFace(0,36,48); - makeSmoothFace(48,18,0); - // Bevel Left Front Corner - makeSmoothFace(18,156,162); - makeSmoothFace(24,18,162); - // Bevel Left Front Top Corner - makeSmoothFace(48,156,18); - // Bevel Left Front Bottom Corner - makeSmoothFace(120,6,150); - // Bevel Left Top - makeSmoothFace(48,66,156); - makeSmoothFace(144,156,66); - // Bevel Bottom - makeSmoothFace(6,120,114); - makeSmoothFace(114,12,6); - // Left Bottom - makeSmoothFace(120,150,174); - makeSmoothFace(174,132,120); - // Right Front Top Corner - makeSmoothFace(36,0,180); - // Right Front Corner - makeSmoothFace(180,0,12); - makeSmoothFace(186,180,12); - // Right Front Bottom Corner - makeSmoothFace(186,12,114); - // Right Bottom - makeSmoothFace(186,114,108); - makeSmoothFace(108,198,186); - // Right Top Corner - makeSmoothFace(180,192,36); - makeSmoothFace(192,42,36); - // Right Back Top Corner - makeSmoothFace(72,42,192); - // Right Back Bottom Corner - makeSmoothFace(78,198,108); - // Right Back Corner - makeSmoothFace(72,192,198); - makeSmoothFace(198,78,72); - // Back Bottom Corner - makeSmoothFace(78,108,132); - makeSmoothFace(132,84,78); - // Back Top - makeSmoothFace(42,72,102); - makeSmoothFace(102,66,42); - // Back Left Top Corner - makeSmoothFace(144,66,102); - // Back Left Corner - makeSmoothFace(144,102,84); - makeSmoothFace(84,174,144); - // Back Left Bottom Corner - makeSmoothFace(174,84,132); - for (unsigned short i=0;i<_vertices.size()/6;i++) { - _indices.push_back(i); - } + glNewList(glList, GL_COMPILE); + glColor(this->color); + glPushMatrix(); + glScalef(renderSize.x, renderSize.y, renderSize.z); + gluSphere(gluNewQuadric(), 1, 20, 20); + glPopMatrix(); + glEndList(); + rd->setObjectToWorldMatrix(cFrame); + glCallList(glList); + changed = false; + return; } break; case Enum::Shape::Block: @@ -962,10 +821,10 @@ void PartInstance::render(RenderDevice* rd) { glVertexPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[0]); glColorPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[3]); glNormalPointer(GL_FLOAT,3 * sizeof(GLfloat), &_normals[0]); - glPushMatrix(); + //glPushMatrix(); //glTranslatef(2,7,0); glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]); - glPopMatrix(); + //glPopMatrix(); glEndList(); } rd->setObjectToWorldMatrix(cFrame); diff --git a/main.cpp b/main.cpp index 51058b1..5719ef4 100644 --- a/main.cpp +++ b/main.cpp @@ -229,7 +229,6 @@ int main(int argc, char** argv) { hThisInstance, NULL ); - if(hwndMain == NULL) { MessageBox(NULL, "Critical error loading: Failed to create HWND, must exit", (g_PlaceholderName + " Crash").c_str() , MB_OK); From fcfed4afcd271698c407f4239bebf564dc808d30 Mon Sep 17 00:00:00 2001 From: Vulpovile Date: Thu, 4 Mar 2021 17:46:47 -0800 Subject: [PATCH 2/2] Much more performant, new cylinder --- Application.cpp | 2 +- PartInstance.cpp | 41 +++++++++++++++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/Application.cpp b/Application.cpp index f4f5a7f..379b817 100644 --- a/Application.cpp +++ b/Application.cpp @@ -955,7 +955,7 @@ void Application::run() { //renderDevice->setViewport(viewportRect); //window()->setInputCaptureCount(1); resizeWithParent(_hWndMain); - + glEnable(GL_CULL_FACE); while (!quit) { diff --git a/PartInstance.cpp b/PartInstance.cpp index 13d63bf..e869799 100644 --- a/PartInstance.cpp +++ b/PartInstance.cpp @@ -745,8 +745,7 @@ void PartInstance::render(RenderDevice* rd) { makeFace(84,174,144); // Back Left Bottom Corner makeFace(174,84,132);*/ - - float radius = renderSize.y + (renderSize.y * (1 - cos(pi() / 12))); + /*float radius = renderSize.y + (renderSize.y * (1 - cos(pi() / 12))); Vector2 xy[13]; for(int i = 0; i < 13; i++) { @@ -776,7 +775,7 @@ void PartInstance::render(RenderDevice* rd) { Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y), Vector3(-renderSize.x, xy[i].x, xy[i].y), Vector3(-renderSize.x, xy[0].x, xy[0].y)); - } + }*/ /*float facetRatio = renderSize.x / (pi() * 0.5F); addQuad( Vector3(renderSize.x, renderSize.y, renderSize.z-facetRatio), @@ -800,7 +799,7 @@ void PartInstance::render(RenderDevice* rd) { Vector3(-renderSize.x, renderSize.y-facetRatio, -renderSize.z), Vector3(renderSize.x, renderSize.y-facetRatio, -renderSize.z));*/ - addPlus(Vector3(-renderSize.x-0.01,0,0)); + /*addPlus(Vector3(-renderSize.x-0.01,0,0)); addPlus2(Vector3(renderSize.x+0.01,0,0)); for (unsigned short i=0;i<_vertices.size()/6;i++) { @@ -808,19 +807,45 @@ void PartInstance::render(RenderDevice* rd) { } //std::reverse(_vertices.begin(), _vertices.end()); //std::reverse(_normals.begin(), _normals.end()); - - + )*/ + GLUquadric* q = gluNewQuadric(); + + addPlus(Vector3(-renderSize.x-0.01,0,0)); + addPlus2(Vector3(renderSize.x+0.01,0,0)); + for (unsigned short i=0;i<_vertices.size()/6;i++) { + _indices.push_back(i); + } + glVertexPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[0]); + glColorPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[3]); + glNormalPointer(GL_FLOAT,3 * sizeof(GLfloat), &_normals[0]); + glNewList(glList, GL_COMPILE); + glColor(this->color); + glPushMatrix(); + glRotatef(90, 0, 1, 0); + glScalef(renderSize.x, renderSize.y, renderSize.z); + glTranslatef(0,0,1); + gluDisk(q, 0, 1, 12, 12); + glTranslatef(0,0,-2); + gluCylinder(q, 1, 1, 2, 12, 1); + glRotatef(180, 1, 0, 0); + gluDisk(q, 0, 1, 12, 12); + glPopMatrix(); + glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]); + glEndList(); + rd->setObjectToWorldMatrix(cFrame); + glCallList(glList); + changed = false; + return; } break; } changed=false; - - glNewList(glList, GL_COMPILE); glVertexPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[0]); glColorPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[3]); glNormalPointer(GL_FLOAT,3 * sizeof(GLfloat), &_normals[0]); + glNewList(glList, GL_COMPILE); //glPushMatrix(); //glTranslatef(2,7,0); glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]);