資源簡(jiǎn)介
看書(shū)過(guò)后,用qt實(shí)現(xiàn)的一個(gè)把2維紋理貼到球面的工程,其中還包含混合光,采用opengl es 3.0;初學(xué)者可以學(xué)習(xí)下

代碼片段和文件信息
#include?“balltexturerender.h“
BallTextureRender::~BallTextureRender()
{
????if(texture_){
????????texture_->destroy();
????????delete?texture_;
????}
}
void?BallTextureRender::initsize(float?r?QImage?&img)
{
????program_.addCacheableShaderFromSourceFile(QOpenGLShader::Vertex“vsrc.vert“);
????program_.addCacheableShaderFromSourceFile(QOpenGLShader::Fragment“fsrc.frag“);
????program_.link();
????r_?=?r;
????int?angleSpan?=?10;?//弧度?=?角度?*?PI?/?180
????for(int?vAngle?=?-90;?vAngle?90;?vAngle?=?vAngle?+?angleSpan){?//生成球面頂點(diǎn)
????????for(int?hAngle?=?0;?hAngle?<=?360;?hAngle?=?hAngle?+?angleSpan){
????????????float?x0?=?r?*?::cos(vAngle?*?PI?/?180)?*?::cos(hAngle?*?PI?/?180);
????????????float?y0?=?r?*?::cos(vAngle?*?PI?/?180)?*?::sin(hAngle?*?PI?/?180);
????????????float?z0?=?r?*?::sin(vAngle?*?PI?/?180);
????????????float?x1?=?r?*?::cos(vAngle?*?PI?/?180)?*?::cos((hAngle?+?angleSpan)?*?PI?/?180);
????????????float?y1?=?r?*?::cos(vAngle?*?PI?/?180)?*?::sin((hAngle?+?angleSpan)?*?PI?/?180);
????????????float?z1?=?r?*?::sin(vAngle?*?PI?/?180);
????????????float?x2?=?r?*?::cos((vAngle?+?angleSpan)?*?PI?/?180)?*?::cos((hAngle?+?angleSpan)?*?PI?/?180);
????????????float?y2?=?r?*?::cos((vAngle?+?angleSpan)?*?PI?/?180)?*?::sin((hAngle?+?angleSpan)?*?PI?/?180);
????????????float?z2?=?r?*?::sin((vAngle?+?angleSpan)?*?PI?/?180);
????????????float?x3?=?r?*?::cos((vAngle?+?angleSpan)?*?PI?/?180)?*?::cos(hAngle?*?PI?/?180);
????????????float?y3?=?r?*?::cos((vAngle?+?angleSpan)?*?PI?/?180)?*?::sin(hAngle?*?PI?/?180);
????????????float?z3?=?r?*?::sin((vAngle?+?angleSpan)?*?PI?/?180);
????????????points_?<???????????????????<???????????????????<????????}
????}
????texture_?=?new?QOpenGLTexture(img);
????vbo_.create();
????vbo_.bind();
????vbo_.allocate(points_.constData()points_.count()?*?sizeof?GLfloat);
}
void?BallTextureRender::render(QOpenGLExtraFunctions?*f?QMatrix4x4?&pMatrix?QMatrix4x4?&vMatrix?QMatrix4x4?&mMatrix?QVector3D?&lightLocation?QVector3D?&camera)
{
????f->glEnable(GL_DEPTH_TEST);
????f->glEnable(GL_CULL_FACE);
????program_.bind();
????vbo_.bind();
????f->glActiveTexture(GL_TEXTURE0?+?0);
????program_.setUniformValue(“uPMatrix“pMatrix);
????program_.setUniformValue(“uVMatrix“vMatrix);
????program_.setUniformValue(“uMMatrix“mMatrix);
????program_.setUniformValue(“uLightLocation“l(fā)ightLocation);
????program_.setUniformValue(“uCamera“camera);
????program_.setUniformValue(“uR“r_);
????program_.setUniformValue(“sTexture“0);
????program_.enableAttributeArray(0);
????program_.enableAttributeArray(1);
????texture_->bind(0);
????program_.setAttributeBuffer(0GL_FLOAT030);
????program_.setAttributeBuffer(1GL_FLOAT030);
????f->glDrawArrays(GL_TRIANGLES0points_.count()?/?3);
????program_.disableAttributeArray(0);
????program_.disableAttributeArray(1);
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????????7??2018-10-01?10:00??balltexture\.git\COMMIT_EDITMSG
?????文件????????316??2018-10-01?09:30??balltexture\.git\config
?????文件?????????73??2018-10-01?09:30??balltexture\.git\desc
?????文件?????????23??2018-10-01?09:30??balltexture\.git\HEAD
?????文件????????478??2018-10-01?09:30??balltexture\.git\hooks\applypatch-msg.sample
?????文件????????896??2018-10-01?09:30??balltexture\.git\hooks\commit-msg.sample
?????文件???????3327??2018-10-01?09:30??balltexture\.git\hooks\fsmonitor-watchman.sample
?????文件????????189??2018-10-01?09:30??balltexture\.git\hooks\post-update.sample
?????文件????????424??2018-10-01?09:30??balltexture\.git\hooks\pre-applypatch.sample
?????文件???????1638??2018-10-01?09:30??balltexture\.git\hooks\pre-commit.sample
?????文件???????1348??2018-10-01?09:30??balltexture\.git\hooks\pre-push.sample
?????文件???????4898??2018-10-01?09:30??balltexture\.git\hooks\pre-reba
?????文件????????544??2018-10-01?09:30??balltexture\.git\hooks\pre-receive.sample
?????文件???????1492??2018-10-01?09:30??balltexture\.git\hooks\prepare-commit-msg.sample
?????文件???????3610??2018-10-01?09:30??balltexture\.git\hooks\update.sample
?????文件????????689??2018-10-01?10:00??balltexture\.git\index
?????文件????????240??2018-10-01?09:30??balltexture\.git\info\exclude
?????文件????????516??2018-10-01?10:00??balltexture\.git\logs\HEAD
?????文件????????516??2018-10-01?10:00??balltexture\.git\logs\refs\heads\master
?????文件????????206??2018-10-01?09:30??balltexture\.git\logs\refs\remotes\origin\HEAD
?????文件????????310??2018-10-01?10:00??balltexture\.git\logs\refs\remotes\origin\master
?????文件????????642??2018-10-01?09:30??balltexture\.git\ob
?????文件????????159??2018-10-01?10:00??balltexture\.git\ob
?????文件????????583??2018-10-01?09:30??balltexture\.git\ob
?????文件????????979??2018-10-01?09:30??balltexture\.git\ob
?????文件????????320??2018-10-01?09:30??balltexture\.git\ob
?????文件????????356??2018-10-01?09:30??balltexture\.git\ob
?????文件????????271??2018-10-01?10:00??balltexture\.git\ob
?????文件????????188??2018-10-01?09:30??balltexture\.git\ob
?????文件????????136??2018-10-01?09:30??balltexture\.git\ob
............此處省略56個(gè)文件信息
評(píng)論
共有 條評(píng)論