资源简介
看书过后,用qt实现的一个把2维纹理贴到球面的工程,其中还包含混合光,采用opengl es 3.0;初学者可以学习下
代码片段和文件信息
#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){ //生成球面顶点
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_ << x1 << y1 << z1 << x3 << y3 << z3
<< x0 << y0 << z0 << x1 << y1 << z1
<< x2 << y2 << z2 << x3 << y3 << z3;
}
}
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“lightLocation);
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);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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个文件信息
相关资源
- 使用ATLAS探测器在s = 13 $$ \\ sqrt {s} =
- 在ATLAS探测器上搜索衰变到增强夸克对
- 搜索在s = 13 TeV pp碰撞中在pp碰撞中产
- 使用ATLAS检测器在s = 13 $$ \\ sqrt {s} =
- 使用ATLAS检测器,在s = 7 TeV的pp碰撞中
- W s Z玻色子对生产横截面在pp碰撞中的
- 使用ATLAS探测器在s = 13 TeV的pp碰撞中用
- 使用ATLAS探测器在s = 8 $$ \\ sqrt {s} =
- 在与ATLAS探测器发生s = 8 TeV pp碰撞的
- 使用ATLAS探测器在s = 7TeV的pp碰撞中区
- 使用ATLAS探测器在13 TeV pp碰撞中搜索轨
- 使用ATLAS探测器在s = 8 TeV的质子-质子
- 使用ATLAS探测器在s = 13 $$ \\ sqrt {s} =
- 使用ATLAS探测器在s = 13 TeV的pp碰撞中搜
- 类似QCD的新领域中的Theta
- 在CERN LHC的pPb碰撞中探索矢量介子光生
- 强子对撞机中光子与强子相互作用中
- 膨胀玻璃通量管中的非平衡轴向电荷
- 从胶子场散射的夸克喷流:从饱和到
- 带有彩色玻璃冷凝液的偶极Wilson线性
- 玻色增强,Liouville有效作用以及p-A碰
- 彩色玻璃冷凝液在小系统碰撞中方位
- 高能分解中的旋转螺旋方法:彩色玻
- CGC因式分解用于质子-核碰撞中正向产
- 大型强子对撞机质子-铅碰撞中的饱和
- 彩色玻璃冷凝物密度矩阵:Lindblad演化
- 相对论重离子对撞机小型系统扫描的
- 彩色玻璃冷凝液的衍射dijet产量和Wi
- Kharzeev-Levin-Nardi模型中的热辐射和包容
- 重子停留在彩色玻璃冷凝物中的时空
评论
共有 条评论