• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: QT  opengl  点云  

资源简介

QT-opengl窗体,实现了 1.绘制立方体, 2.读取点云并显示 3.相机可以进行简单旋转,旋转速度可以渐渐变缓 4.可以半透明(融合)演示。

资源截图

代码片段和文件信息

#include “qscarletopenglinterface.h“
#include
#include
#include
#include
#include
#include
#include
#include
//=====Eigen
#include
#include
//=====std
#include
#include
#include
#include
//========opencv
#include
#include
#include
using namespace cv;
using namespace Eigen;
using namespace std;
//Qt5 把 OpenGL 1~4 的版本的接口自己封装了,所以很多第三方库的 gl 函数在 Qt 编译环境下都无法 link 到
qScarletOpenglInterface::qScarletOpenglInterface(QWidget*parent)
    :QOpenGLWidget(parent)

{

}
//这里定义了三个数组,它们描述的是和光源有关的信息
//如果没有环境光,未被漫射光照到的地方会变得十分黑暗。
//第二行有关lightDiffuse的代码使我们生成最亮的漫射光。所有的参数值都取成最大值1.0。它将照在我们木板箱的前面,看起来挺好。
GLfloat lightAmbient[4] = { 0.5 0.5 0.5 1.0 };
GLfloat lightDiffuse[4] = { 0.5 0.0 1.0 1.0 };
GLfloat lightPosition[4] = { 0.0 0.0 2.0 1.0 };
GLuint fogMode[3] = { GL_EXP GL_EXP2 GL_LINEAR };
GLfloat fogColor[4] = { 0.618 0.0 0.1 1.0};
GLfloat BGColor[4] = { 0.0 0.0 0.0 1.0};

int stdstrToi(std::string NumStr)
{
    std::stringstream stream(NumStr);
    int int_temp;
    stream >> int_temp;
    return int_temp;
}
double stdstrTod(std::string NumStr)//三个重载函数
{
    std::stringstream stream(NumStr);
    double double_temp;
    stream >> double_temp;
    return double_temp;
}
std::vector StrSplit(std::string str std::string pattern)//又来了,分割字符串
{
    std::string::size_type pos;
    std::vector result;
    str += pattern;//扩展字符串以方便操作
    int size = str.size();

    for (int i = 0; i    {
        pos = str.find(pattern i);
        if (pos        {
            std::string s = str.substr(i pos - i);
            result.push_back(s);
            i = pos + pattern.size() - 1;
        }
    }
    return result;
}

void qScarletOpenglInterface::Start()
{
    qDebug()<<“QOpengl Start!“;
    setWindowtitle(tr(“opengl demo“));
    fullscreen=false;//不全屏
    if (fullscreen)
        showFullScreen();
    rTri = 0.0;
    rQuad = 0.0;

    xRot =yRot=zRot =0.0;

    zoom = -10.0;//-5.0
    xSpeed = ySpeed = 0.0;
    filter = 0;
    ligtht = false;
    blend = false;
    fogFilter = 0;
    //下面是增强现实
    //cam.open(0);
    //clk.start(30);
    //Qobject::connect(&clk SIGNAL(timeout()) this SLOT(updateWindow()));
}
void qScarletOpenglInterface::InitialOrigion()
{
    try
    {
        m_camera.open(0);
    }
    catch(...)
    {
        m_camera.open(1);
    }

    glEnable( GL_TEXTURE_2D );
    glShadeModel(GL_SMOOTH);
    glClearColor( 0.618 0.0 0.1 0.5 );//红绿蓝
    glClearDepth(1.0);//设置深度缓存
    glEnable(GL_DEPTH_TEST);//启用深度测试。
    glDepthFunc(GL_LEQUAL);//所作深度测试的类型。
    glHint(GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST);//真正精细的透视修正。这一行告诉OpenGL我们希望进行最好的透视修正。这会十分轻微的影响性能。
    glMatrixM

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3029  2017-09-13 18:55  qscarletopenglinterface.h

     文件      28763  2017-09-13 20:30  qscarletopenglinterface.cpp

----------- ---------  ---------- -----  ----

                31792                    2


评论

共有 条评论