diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-04-11 10:20:33 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-04-11 10:21:00 +0300 |
commit | 645e55729f5b1eb40699b426e0828e2fc448b5a4 (patch) | |
tree | 6345da16485609ff01f71f24293fd519c5528cde /src/datavis3d/engine | |
parent | 268f96670c05719d14775aeb3c80b58b9421c990 (diff) |
Texture stuff added (lots of test hacks still included, to be removed)
Change-Id: Ib6a68df778970a3339ed16cd579f0bd9fa411e0b
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavis3d/engine')
-rw-r--r-- | src/datavis3d/engine/engine.qrc | 3 | ||||
-rw-r--r-- | src/datavis3d/engine/q3dbars.cpp | 36 | ||||
-rw-r--r-- | src/datavis3d/engine/shaders/fragmentShaderTexture | 39 | ||||
-rw-r--r-- | src/datavis3d/engine/textures/cube.png | bin | 0 -> 30341 bytes |
4 files changed, 46 insertions, 32 deletions
diff --git a/src/datavis3d/engine/engine.qrc b/src/datavis3d/engine/engine.qrc index 8e781f05..6803d1b7 100644 --- a/src/datavis3d/engine/engine.qrc +++ b/src/datavis3d/engine/engine.qrc @@ -22,4 +22,7 @@ <file alias="fragmentTexture">shaders/fragmentShaderTexture</file> <file alias="vertexTexture">shaders/vertexShaderTexture</file> </qresource> + <qresource prefix="/textures"> + <file alias="cubetex">textures/cube.png</file> + </qresource> </RCC> diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp index 5965cc37..9a72bd1a 100644 --- a/src/datavis3d/engine/q3dbars.cpp +++ b/src/datavis3d/engine/q3dbars.cpp @@ -47,6 +47,7 @@ #include "qdataset_p.h" #include "shaderhelper_p.h" #include "objecthelper_p.h" +#include "texturehelper_p.h" #include "utils_p.h" #include <QMatrix4x4> @@ -85,8 +86,11 @@ void Q3DBars::initialize() d_ptr->initShaders(QStringLiteral(":/shaders/vertex") , QStringLiteral(":/shaders/fragment")); } - d_ptr->initBackgroundShaders(QStringLiteral(":/shaders/vertex") - , QStringLiteral(":/shaders/fragment")); + // TODO: Texture test + d_ptr->initBackgroundShaders(QStringLiteral(":/shaders/vertexTexture") + , QStringLiteral(":/shaders/fragmentTexture")); +// d_ptr->initBackgroundShaders(QStringLiteral(":/shaders/vertexTexture") +// , QStringLiteral(":/shaders/fragmentTexture")); d_ptr->initSelectionShader(); #ifndef USE_HAX0R_SELECTION @@ -623,11 +627,9 @@ void Q3DBars::drawScene() // Bind background shader d_ptr->m_backgroundShader->bind(); - // Texture test - //glEnable(GL_TEXTURE_2D); - //GLuint bgrTexture = QGLContext::bindTexture(QImage(":/cube.png")); - //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + // TODO: Texture test + glEnable(GL_TEXTURE_2D); + GLuint bgrTexture = TextureHelper::create2DTexture(QImage(QStringLiteral(":/textures/cubetex"))); // Draw background if (d_ptr->m_backgroundObj) { @@ -660,11 +662,11 @@ void Q3DBars::drawScene() , d_ptr->m_lightStrength); d_ptr->m_backgroundShader->setUniformValue(d_ptr->m_backgroundShader->ambientS() , d_ptr->m_ambientStrength); - - // Bind the texture in texture unit 0 -// glActiveTexture(GL_TEXTURE0); -// glBindTexture(GL_TEXTURE_2D, bgrTexture); -// glUniform1i(d_ptr->m_backgroundShader->texture(), 0); + // TODO: Texture test + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, bgrTexture); + d_ptr->m_backgroundShader->setUniformValue(d_ptr->m_backgroundShader->texture() + , 0); // 1st attribute buffer : vertices glEnableVertexAttribArray(d_ptr->m_backgroundShader->posAtt()); @@ -678,6 +680,7 @@ void Q3DBars::drawScene() glVertexAttribPointer(d_ptr->m_backgroundShader->normalAtt() , 3, GL_FLOAT, GL_FALSE, 0, (void*)0); + // TODO: Texture test // 3rd attribute buffer : UVs glEnableVertexAttribArray(d_ptr->m_backgroundShader->uvAtt()); glBindBuffer(GL_ARRAY_BUFFER, d_ptr->m_backgroundObj->uvBuf()); @@ -695,11 +698,18 @@ void Q3DBars::drawScene() glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - //glDisableVertexAttribArray(d_ptr->m_backgroundShader->uvAtt()); + // TODO: Texture test + glDisableVertexAttribArray(d_ptr->m_backgroundShader->uvAtt()); + glDisableVertexAttribArray(d_ptr->m_backgroundShader->normalAtt()); glDisableVertexAttribArray(d_ptr->m_backgroundShader->posAtt()); } + // TODO: Texture test + glBindTexture(GL_TEXTURE_2D, 0); + glDeleteTextures(1, &bgrTexture); + glDisable(GL_TEXTURE_2D); + // Release background shader d_ptr->m_backgroundShader->release(); diff --git a/src/datavis3d/engine/shaders/fragmentShaderTexture b/src/datavis3d/engine/shaders/fragmentShaderTexture index f1b11908..9f2692f2 100644 --- a/src/datavis3d/engine/shaders/fragmentShaderTexture +++ b/src/datavis3d/engine/shaders/fragmentShaderTexture @@ -10,24 +10,25 @@ uniform highp float lightStrength; uniform highp float ambientStrength; uniform sampler2D textureSampler; void main() { - highp vec3 materialDiffuseColor = texture2D(textureSampler, UV); - highp vec3 materialAmbientColor = vec3(ambientStrength, ambientStrength, ambientStrength) * materialDiffuseColor; - highp vec3 materialSpecularColor = vec3(1.0, 1.0, 1.0); - highp float distance = length(lightPosition_wrld - position_wrld); - highp vec3 n = normalize(normal_cmr); - highp vec3 l = normalize(lightDirection_cmr); - highp float cosTheta = dot(n, l); - if (cosTheta < 0.0) { cosTheta = 0.0; } - if (cosTheta > 1.0) { cosTheta = 1.0; } - highp vec3 E = normalize(eyeDirection_cmr); - highp vec3 R = reflect(-l, n); - highp float cosAlpha = dot(E, R); - if (cosAlpha < 0.0) { cosAlpha = 0.0; } - if (cosAlpha > 1.0) { cosAlpha = 1.0; } - gl_FragColor.rgb = //color_mdl + color_mdl * vec3(cosTheta * cosTheta) / (distance * distance) + vec3(cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha) / (distance * distance); - materialAmbientColor + - materialDiffuseColor * lightStrength * (cosTheta * cosTheta) / distance + - materialSpecularColor * lightStrength * (cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha) / distance;//(distance * distance); - gl_FragColor.a = 1.0; + //highp vec3 materialDiffuseColor = texture2D(textureSampler, UV).rgb; + //highp vec3 materialAmbientColor = vec3(ambientStrength, ambientStrength, ambientStrength) * materialDiffuseColor; + //highp vec3 materialSpecularColor = vec3(1.0, 1.0, 1.0); + //highp float distance = length(lightPosition_wrld - position_wrld); + //highp vec3 n = normalize(normal_cmr); + //highp vec3 l = normalize(lightDirection_cmr); + //highp float cosTheta = dot(n, l); + //if (cosTheta < 0.0) { cosTheta = 0.0; } + //if (cosTheta > 1.0) { cosTheta = 1.0; } + //highp vec3 E = normalize(eyeDirection_cmr); + //highp vec3 R = reflect(-l, n); + //highp float cosAlpha = dot(E, R); + //if (cosAlpha < 0.0) { cosAlpha = 0.0; } + //if (cosAlpha > 1.0) { cosAlpha = 1.0; } + //gl_FragColor.rgb = //color_mdl + color_mdl * vec3(cosTheta * cosTheta) / (distance * distance) + vec3(cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha) / (distance * distance); + // materialAmbientColor + + // materialDiffuseColor * lightStrength * (cosTheta * cosTheta) / distance + + // materialSpecularColor * lightStrength * (cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha) / distance;//(distance * distance); + //gl_FragColor.a = 1.0; + gl_FragColor = texture2D(textureSampler, UV); } diff --git a/src/datavis3d/engine/textures/cube.png b/src/datavis3d/engine/textures/cube.png Binary files differnew file mode 100644 index 00000000..42c8c51b --- /dev/null +++ b/src/datavis3d/engine/textures/cube.png |