Refactor
This commit is contained in:
@@ -63,12 +63,11 @@ void ExampleScene::init()
|
||||
mTestPhong->mNBO.create();
|
||||
mTestPhong->mNBO.setUsagePattern(QOpenGLBuffer::StaticDraw);
|
||||
mTestPhong->mNBO.bind();
|
||||
mTestPhong->mNBO.allocate(mTestPhong->normals().data(),
|
||||
mTestPhong->normals().size()
|
||||
* sizeof(mTestPhong->normals()[0]));
|
||||
mTestPhong->mNBO.allocate(mTestPhong->getNormals().data(),
|
||||
mTestPhong->getNormals().size()
|
||||
* sizeof(mTestPhong->getNormals()[0]));
|
||||
mTestPhong->mProgram.enableAttributeArray(1);
|
||||
mTestPhong->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
mTestPhong->mProgram.setAttributeBuffer(1, GL_FLOAT, 0, 3, sizeof(QVector3D));
|
||||
mTestPhong->mNBO.release();
|
||||
mTestPhong->mVAO.release();
|
||||
mTestPhong->mProgram.release();
|
||||
@@ -88,9 +87,9 @@ void ExampleScene::init()
|
||||
mTestAmbient->mNBO.create();
|
||||
mTestAmbient->mNBO.setUsagePattern(QOpenGLBuffer::StaticDraw);
|
||||
mTestAmbient->mNBO.bind();
|
||||
mTestAmbient->mNBO.allocate(mTestAmbient->normals().data(),
|
||||
mTestAmbient->normals().size()
|
||||
* sizeof(mTestAmbient->normals()[0]));
|
||||
mTestAmbient->mNBO.allocate(mTestAmbient->getNormals().data(),
|
||||
mTestAmbient->getNormals().size()
|
||||
* sizeof(mTestAmbient->getNormals()[0]));
|
||||
mTestAmbient->mProgram.enableAttributeArray(1);
|
||||
mTestAmbient->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -112,9 +111,9 @@ void ExampleScene::init()
|
||||
mTestDiffuse->mNBO.create();
|
||||
mTestDiffuse->mNBO.setUsagePattern(QOpenGLBuffer::StaticDraw);
|
||||
mTestDiffuse->mNBO.bind();
|
||||
mTestDiffuse->mNBO.allocate(mTestDiffuse->normals().data(),
|
||||
mTestDiffuse->normals().size()
|
||||
* sizeof(mTestDiffuse->normals()[0]));
|
||||
mTestDiffuse->mNBO.allocate(mTestDiffuse->getNormals().data(),
|
||||
mTestDiffuse->getNormals().size()
|
||||
* sizeof(mTestDiffuse->getNormals()[0]));
|
||||
mTestDiffuse->mProgram.enableAttributeArray(1);
|
||||
mTestDiffuse->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -138,9 +137,9 @@ void ExampleScene::init()
|
||||
mTestSpecular->mNBO.create();
|
||||
mTestSpecular->mNBO.setUsagePattern(QOpenGLBuffer::StaticDraw);
|
||||
mTestSpecular->mNBO.bind();
|
||||
mTestSpecular->mNBO.allocate(mTestSpecular->normals().data(),
|
||||
mTestSpecular->normals().size()
|
||||
* sizeof(mTestSpecular->normals()[0]));
|
||||
mTestSpecular->mNBO.allocate(mTestSpecular->getNormals().data(),
|
||||
mTestSpecular->getNormals().size()
|
||||
* sizeof(mTestSpecular->getNormals()[0]));
|
||||
mTestSpecular->mProgram.enableAttributeArray(1);
|
||||
mTestSpecular->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -261,9 +260,9 @@ void ExampleScene::init()
|
||||
mMeshes.back()->mNBO.create();
|
||||
mMeshes.back()->mNBO.bind();
|
||||
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->normals().data(),
|
||||
mMeshes.back()->normals().size()
|
||||
* sizeof(mMeshes.back()->normals()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->getNormals().data(),
|
||||
mMeshes.back()->getNormals().size()
|
||||
* sizeof(mMeshes.back()->getNormals()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -330,9 +329,9 @@ void ExampleScene::init()
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mProgram.bind();
|
||||
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->normals().data(),
|
||||
mMeshes.back()->normals().size()
|
||||
* sizeof(mMeshes.back()->normals()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->getNormals().data(),
|
||||
mMeshes.back()->getNormals().size()
|
||||
* sizeof(mMeshes.back()->getNormals()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -352,9 +351,9 @@ void ExampleScene::init()
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mProgram.bind();
|
||||
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->normals().data(),
|
||||
mMeshes.back()->normals().size()
|
||||
* sizeof(mMeshes.back()->normals()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->getNormals().data(),
|
||||
mMeshes.back()->getNormals().size()
|
||||
* sizeof(mMeshes.back()->getNormals()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -374,19 +373,16 @@ void ExampleScene::init()
|
||||
mMeshes.back()->init();
|
||||
mMeshes.back()->mProgram.bind();
|
||||
|
||||
mMeshes.back()->setTexture(Texture::initTexture2D(":/crate.png"));
|
||||
mMeshes.back()->setTexture(OpenGLTextureFactory::initTexture2D(":/crate.png"));
|
||||
mMeshes.back()->setUniform("uTexture", 0);
|
||||
mMeshes.back()->texture().bind();
|
||||
|
||||
mMeshes.back()->texture().release();
|
||||
|
||||
mMeshes.back()->mVAO.bind();
|
||||
mMeshes.back()->mNBO.destroy();
|
||||
mMeshes.back()->mNBO.create();
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->mShape.texCoords().data(),
|
||||
mMeshes.back()->mShape.texCoords().size()
|
||||
* sizeof(mMeshes.back()->mShape.texCoords()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->mShape.getTexCoords().data(),
|
||||
mMeshes.back()->mShape.getTexCoords().size()
|
||||
* sizeof(mMeshes.back()->mShape.getTexCoords()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
2, sizeof(QVector2D));
|
||||
@@ -405,13 +401,13 @@ void ExampleScene::init()
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mProgram.bind();
|
||||
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->texCoords().data(),
|
||||
mMeshes.back()->texCoords().size()
|
||||
* sizeof(mMeshes.back()->texCoords()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->getTexCoords().data(),
|
||||
mMeshes.back()->getTexCoords().size()
|
||||
* sizeof(mMeshes.back()->getTexCoords()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
mMeshes.back()->setTexture(Texture::initTexture2D(":/crate.png"));
|
||||
mMeshes.back()->setTexture(OpenGLTextureFactory::initTexture2D(":/crate.png"));
|
||||
|
||||
mMeshes.back()->mProgram.setUniformValue("uTexture", 0);
|
||||
mMeshes.back()->mProgram.release();
|
||||
@@ -429,16 +425,16 @@ void ExampleScene::init()
|
||||
mMeshes.back()->init();
|
||||
mMeshes.back()->mProgram.bind();
|
||||
|
||||
mMeshes.back()->setTexture(Texture::initCubeMap(":/crate.png"));
|
||||
mMeshes.back()->setTexture(OpenGLTextureFactory::initCubeMap(":/crate.png"));
|
||||
mMeshes.back()->setUniform("uTexture", 0);
|
||||
|
||||
mMeshes.back()->mVAO.bind();
|
||||
mMeshes.back()->mNBO.destroy();
|
||||
mMeshes.back()->mNBO.create();
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->mShape.texCoords().data(),
|
||||
mMeshes.back()->mShape.texCoords().size()
|
||||
* sizeof(mMeshes.back()->mShape.texCoords()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->mShape.getTexCoords().data(),
|
||||
mMeshes.back()->mShape.getTexCoords().size()
|
||||
* sizeof(mMeshes.back()->mShape.getTexCoords()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
2, sizeof(QVector2D));
|
||||
@@ -458,9 +454,9 @@ void ExampleScene::init()
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mProgram.bind();
|
||||
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->normals().data(),
|
||||
mMeshes.back()->normals().size()
|
||||
* sizeof(mMeshes.back()->normals()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->getNormals().data(),
|
||||
mMeshes.back()->getNormals().size()
|
||||
* sizeof(mMeshes.back()->getNormals()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -480,9 +476,9 @@ void ExampleScene::init()
|
||||
mMeshes.back()->mVAO.bind();
|
||||
mMeshes.back()->mNBO.create();
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->normals().data(),
|
||||
mMeshes.back()->normals().size()
|
||||
* sizeof(mMeshes.back()->normals()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->getNormals().data(),
|
||||
mMeshes.back()->getNormals().size()
|
||||
* sizeof(mMeshes.back()->getNormals()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -502,9 +498,9 @@ void ExampleScene::init()
|
||||
mMeshes.back()->mVAO.bind();
|
||||
mMeshes.back()->mNBO.create();
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->normals().data(),
|
||||
mMeshes.back()->normals().size()
|
||||
* sizeof(mMeshes.back()->normals()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->getNormals().data(),
|
||||
mMeshes.back()->getNormals().size()
|
||||
* sizeof(mMeshes.back()->getNormals()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
3, sizeof(QVector3D));
|
||||
@@ -520,19 +516,16 @@ void ExampleScene::init()
|
||||
mMeshes.back()->init();
|
||||
mMeshes.back()->mProgram.bind();
|
||||
|
||||
mMeshes.back()->setTexture(Texture::initTexture2D(":/crate.png"));
|
||||
mMeshes.back()->setTexture(OpenGLTextureFactory::initTexture2D(":/crate.png"));
|
||||
mMeshes.back()->setUniform("uTexture", 0);
|
||||
mMeshes.back()->texture().bind();
|
||||
|
||||
mMeshes.back()->texture().release();
|
||||
|
||||
mMeshes.back()->mVAO.bind();
|
||||
mMeshes.back()->mNBO.destroy();
|
||||
mMeshes.back()->mNBO.create();
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->mShape.texCoords().data(),
|
||||
mMeshes.back()->mShape.texCoords().size()
|
||||
* sizeof(mMeshes.back()->mShape.texCoords()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->mShape.getTexCoords().data(),
|
||||
mMeshes.back()->mShape.getTexCoords().size()
|
||||
* sizeof(mMeshes.back()->mShape.getTexCoords()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
2, sizeof(QVector2D));
|
||||
@@ -549,19 +542,16 @@ void ExampleScene::init()
|
||||
mMeshes.back()->init();
|
||||
mMeshes.back()->mProgram.bind();
|
||||
|
||||
mMeshes.back()->setTexture(Texture::initTexture2D(":/crate.png"));
|
||||
mMeshes.back()->setTexture(OpenGLTextureFactory::initTexture2D(":/crate.png"));
|
||||
mMeshes.back()->setUniform("uTexture", 0);
|
||||
mMeshes.back()->texture().bind();
|
||||
|
||||
mMeshes.back()->texture().release();
|
||||
|
||||
mMeshes.back()->mVAO.bind();
|
||||
mMeshes.back()->mNBO.destroy();
|
||||
mMeshes.back()->mNBO.create();
|
||||
mMeshes.back()->mNBO.bind();
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->mShape.texCoords().data(),
|
||||
mMeshes.back()->mShape.texCoords().size()
|
||||
* sizeof(mMeshes.back()->mShape.texCoords()[0]));
|
||||
mMeshes.back()->mNBO.allocate(mMeshes.back()->mShape.getTexCoords().data(),
|
||||
mMeshes.back()->mShape.getTexCoords().size()
|
||||
* sizeof(mMeshes.back()->mShape.getTexCoords()[0]));
|
||||
mMeshes.back()->mProgram.enableAttributeArray(1);
|
||||
mMeshes.back()->mProgram.setAttributeBuffer(1, GL_FLOAT, 0,
|
||||
2, sizeof(QVector2D));
|
||||
@@ -604,20 +594,24 @@ void ExampleScene::draw()
|
||||
{
|
||||
Scene::draw();
|
||||
|
||||
for (const auto & model : mModels) model->draw();
|
||||
|
||||
for (const auto & mesh : mMeshes) mesh->draw();
|
||||
|
||||
mTestPhong->mProgram.bind();
|
||||
mTestPhong->setUniform("uModelInverseTransposed",
|
||||
mTestPhong->mTransform.toMatrix().normalMatrix());
|
||||
mTestPhong->setUniform(
|
||||
"uLightPosition",
|
||||
MeshRenderer::getInstance("phongLight")->mTransform.translation());
|
||||
MeshRenderer::getInstance("phongLight")->mTransform.getTranslation());
|
||||
mTestPhong->setUniform("uCameraPosition",
|
||||
ExampleScene::Camera().transform().translation());
|
||||
ExampleScene::Camera().transform().getTranslation());
|
||||
mTestPhong->mProgram.release();
|
||||
mTestPhong->draw();
|
||||
|
||||
mTestAmbient->mProgram.bind();
|
||||
mTestAmbient->setUniform("uCameraPosition",
|
||||
ExampleScene::Camera().transform().translation());
|
||||
ExampleScene::Camera().transform().getTranslation());
|
||||
mTestAmbient->mProgram.release();
|
||||
mTestAmbient->draw();
|
||||
|
||||
@@ -626,8 +620,9 @@ void ExampleScene::draw()
|
||||
mTestDiffuse->mTransform.toMatrix().normalMatrix());
|
||||
mTestDiffuse->setUniform(
|
||||
"uLightPosition",
|
||||
MeshRenderer::getInstance("diffuseLight")->mTransform.translation());
|
||||
mTestDiffuse->setUniform("uCameraPosition", ExampleScene::Camera().transform().translation());
|
||||
MeshRenderer::getInstance("diffuseLight")->mTransform.getTranslation());
|
||||
mTestDiffuse->setUniform("uCameraPosition",
|
||||
ExampleScene::Camera().transform().getTranslation());
|
||||
mTestDiffuse->mProgram.release();
|
||||
mTestDiffuse->draw();
|
||||
|
||||
@@ -637,19 +632,21 @@ void ExampleScene::draw()
|
||||
mTestSpecular->mTransform.toMatrix().normalMatrix());
|
||||
mTestSpecular->setUniform(
|
||||
"uLightPosition",
|
||||
MeshRenderer::getInstance("specularLight")->mTransform.translation());
|
||||
mTestSpecular->setUniform("uCameraPosition", ExampleScene::Camera().transform().translation());
|
||||
MeshRenderer::getInstance("specularLight")->mTransform.getTranslation());
|
||||
mTestSpecular->setUniform("uCameraPosition",
|
||||
ExampleScene::Camera().transform().getTranslation());
|
||||
mTestSpecular->mProgram.release();
|
||||
mTestSpecular->draw();
|
||||
}
|
||||
|
||||
void ExampleScene::update()
|
||||
{
|
||||
auto position = MeshRenderer::getInstance("alienTestLight")->mTransform.translation();
|
||||
auto position = MeshRenderer::getInstance(
|
||||
"alienTestLight")->mTransform.getTranslation();
|
||||
Model::getInstance("alienTest")->setUniform(
|
||||
"uLight.position", position);
|
||||
Model::getInstance("alienTest")->setUniform(
|
||||
"uCameraPosition", ExampleScene::Camera().transform().translation());
|
||||
"uCameraPosition", ExampleScene::Camera().transform().getTranslation());
|
||||
auto posMatrix = Model::getInstance("alienTest")->mTransform.toMatrix();
|
||||
Model::getInstance("alienTest")->setUniform(
|
||||
"uMVP.normalMatrix", posMatrix.normalMatrix());
|
||||
@@ -661,11 +658,12 @@ void ExampleScene::update()
|
||||
"uMVP.projection", ExampleScene::Projection());
|
||||
Model::getInstance("alienTest")->mTransform.rotate(0.75f, 0.0f, 1.0f, 0.0f);
|
||||
|
||||
position = MeshRenderer::getInstance("spartanTestLight")->mTransform.translation();
|
||||
position = MeshRenderer::getInstance(
|
||||
"spartanTestLight")->mTransform.getTranslation();
|
||||
Model::getInstance("spartanTest")->setUniform(
|
||||
"uLight.position", position);
|
||||
Model::getInstance("spartanTest")->setUniform(
|
||||
"uCameraPosition", ExampleScene::Camera().transform().translation());
|
||||
"uCameraPosition", ExampleScene::Camera().transform().getTranslation());
|
||||
posMatrix = Model::getInstance("spartanTest")->mTransform.toMatrix();
|
||||
Model::getInstance("spartanTest")->setUniform(
|
||||
"uMVP.normalMatrix", posMatrix.normalMatrix());
|
||||
@@ -682,11 +680,11 @@ void ExampleScene::update()
|
||||
MeshRenderer::getInstance("testPhong")->mTransform.rotate(
|
||||
0.75f, 1.0f, 0.5f, 0.0f);
|
||||
MeshRenderer::getInstance("testPhong")->mProgram.bind();
|
||||
position = MeshRenderer::getInstance("testLight")->mTransform.translation();
|
||||
position = MeshRenderer::getInstance("testLight")->mTransform.getTranslation();
|
||||
MeshRenderer::getInstance("testPhong")->setUniform(
|
||||
"uLight.position", position);
|
||||
MeshRenderer::getInstance("testPhong")->setUniform(
|
||||
"uCameraPosition", ExampleScene::Camera().transform().translation());
|
||||
"uCameraPosition", ExampleScene::Camera().transform().getTranslation());
|
||||
posMatrix = MeshRenderer::getInstance("testPhong")->mTransform.toMatrix();
|
||||
MeshRenderer::getInstance("testPhong")->setUniform(
|
||||
"uMVP.normalMatrix", posMatrix.normalMatrix());
|
||||
@@ -722,7 +720,7 @@ void ExampleScene::update()
|
||||
static float translateX = 0.025f;
|
||||
float limit = -9.0f; // Origin position.x - 2.0f
|
||||
float posX =
|
||||
MeshRenderer::getInstance("topTriangle")->mTransform.translation().x();
|
||||
MeshRenderer::getInstance("topTriangle")->mTransform.getTranslation().x();
|
||||
if (posX < limit || posX > limit + 4.0f) {
|
||||
translateX = -translateX;
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include <qtkwidget.h>
|
||||
#include <mainwindow.h>
|
||||
#include <QSurfaceFormat>
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
|
||||
Reference in New Issue
Block a user