• 大小: 25.38MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-03
  • 语言: C/C++
  • 标签: OpenGLobj  

资源简介

使用OpenGL实现拾取和选择obj模型,开发环境为qt5.2.0,但是核心代码部分都有注释,可以移植到MFC等。另外,下载完成后请先阅读readme.txt,希望大家批评指正。因为是自己花时间完成的,所以需要一点辛苦费,希望大家谅解~

资源截图

代码片段和文件信息

/*
 *   Coder:Liew Dennis
 *   Northwest A&F University 的普通985院校的本科生
 *   完成时间: 2016/12/13
 *
 *   希望批评指正。
 *            : (CSDN博客:Mahabharata_)
 *
 *
*/

// 使用说明: 涉及到路径问题,请自行修改“17-31行“的“路径“字符串。

#include “glwidget.h“

// 资源文件路径: obj/mtl/png
char terrainFile[100] = “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/land.jpg“;
char texturePath[3][100]={
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/ali/ali_skin.png“
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/zinderla/Zdl.png“
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/Krista/Krsta.png“};

char mtlPath[3][100]={
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/ali/ali.mtl“
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/zinderla/Zdl.mtl“
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/Krista/Krsta.mtl“};

char objPath[3][100]={
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/ali/ali.obj“
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/zinderla/Zdl.obj“
    “C:/Qt/Qt5.2.0/Tools/QtCreator/bin/GameTest/DATA/Krista/Krsta.obj“};

double NPCposition[3][3] = {5054020054250-10054-350};

GLWidget::GLWidget(QWidget* parent):QGLWidget(parent)
{
    _verticalAngle = 0.0f;
    _horizonAngle = 0.0f;
    _scale = 1.0f;
    _state = GLWidget::HANG;

    _centerPos[0] = _centerPos[1] = _centerPos[2] =0.0f;
}

void GLWidget::loadTexture(QString filepath GLuint *texture)
{
    QImage tex buf;

    if(!buf.load(filepath))
    {
        printf(“error: failed to load image!“);
        exit(1);
    }

    tex = convertToGLFormat(buf);
    glGenTextures(1 texture);

    glBindTexture(GL_TEXTURE_2D *texture);
    gluBuild2DMipmaps(GL_TEXTURE_2D GL_RGBA tex.width() tex.height() GL_RGBA GL_UNSIGNED_BYTE tex.bits());
    glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_NEAREST);
}

void GLWidget::initializeGL()
{
    glClearColor(0.50.50.50.0);
    glShadeModel(GL_SMOOTH);

    //create light
    GLfloat light_ambient [4] = {0.50.50.51.0};
    GLfloat light_diffuse [4] = {1.01.01.01.0};
    GLfloat light_specular[4] = {0.00.00.01.0};
    GLfloat light_position[4] = {1.01.01.00.0};

    glLightfv(GL_LIGHT0 GL_AMBIENT light_ambient);
    glLightfv(GL_LIGHT0 GL_DIFFUSE light_diffuse);
    glLightfv(GL_LIGHT0 GL_SPECULARlight_specular);
    glLightfv(GL_LIGHT0 GL_POSITIONlight_position);

    GLfloat mat_ambient[] = { 0.192250 0.192250 0.192250 1.000000};
    GLfloat mat_diffuse[] = { 0.507540 0.507540 0.507540 1.000000};
    GLfloat mat_specular[] = { 0.508273 0.508273 0.508273 1.000000 };
    GLfloat mat_shininess[] = { 51.200001};


    glMaterialfv(GL_FRONT GL_AMBIENT mat_ambient);
    glMaterialfv(GL_FRONT GL_DIFFUSE mat_diffuse);
    glMaterialfv(GL_FRONT GL_SPECULAR mat_specular);
    glMaterialfv(GL_FRONT GL_SHININESS mat_shininess);

    glEnab

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-12-13 12:24  拾取与选择\
     文件         472  2016-12-13 12:23  拾取与选择\readme.txt
     目录           0  2016-12-13 12:19  拾取与选择\代码\
     目录           0  2016-12-13 12:19  拾取与选择\代码\GameTest\
     目录           0  2016-12-13 12:19  拾取与选择\代码\GameTest\DATA\
     目录           0  2016-12-13 12:19  拾取与选择\代码\GameTest\DATA\Krista\
     文件         116  2016-11-30 21:28  拾取与选择\代码\GameTest\DATA\Krista\Krsta.mtl
     文件      327381  2016-11-30 21:12  拾取与选择\代码\GameTest\DATA\Krista\Krsta.obj
     文件      273496  2016-11-30 21:27  拾取与选择\代码\GameTest\DATA\Krista\Krsta.png
     目录           0  2016-12-13 12:19  拾取与选择\代码\GameTest\DATA\ali\
     文件         114  2016-11-29 20:16  拾取与选择\代码\GameTest\DATA\ali\ali.mtl
     文件      922752  2016-11-29 20:13  拾取与选择\代码\GameTest\DATA\ali\ali.obj
     文件      202683  2016-11-29 20:13  拾取与选择\代码\GameTest\DATA\ali\ali_skin.png
     文件        8295  2016-11-29 21:07  拾取与选择\代码\GameTest\DATA\land.jpg
     文件      309628  2016-11-29 21:00  拾取与选择\代码\GameTest\DATA\land1.jpg
     目录           0  2016-12-13 12:19  拾取与选择\代码\GameTest\DATA\zinderla\
     文件         112  2016-11-30 21:28  拾取与选择\代码\GameTest\DATA\zinderla\Zdl.mtl
     文件     1107158  2016-11-30 21:12  拾取与选择\代码\GameTest\DATA\zinderla\Zdl.obj
     文件      169547  2016-11-30 21:20  拾取与选择\代码\GameTest\DATA\zinderla\Zdl.png
     文件         539  2016-11-30 20:16  拾取与选择\代码\GameTest\GameTest.pro
     文件       18069  2016-12-13 12:19  拾取与选择\代码\GameTest\GameTest.pro.user
     文件        7992  2016-12-13 12:18  拾取与选择\代码\GameTest\glwidget.cpp
     文件        1241  2016-11-30 21:41  拾取与选择\代码\GameTest\glwidget.h
     文件         183  2016-11-29 12:49  拾取与选择\代码\GameTest\main.cpp
     文件         455  2016-12-13 12:09  拾取与选择\代码\GameTest\mainwindow.cpp
     文件         447  2016-11-29 13:05  拾取与选择\代码\GameTest\mainwindow.h
     文件         654  2016-11-29 12:49  拾取与选择\代码\GameTest\mainwindow.ui
     文件         117  2016-11-30 17:41  拾取与选择\代码\GameTest\matrix.cpp
     文件         262  2016-11-30 17:40  拾取与选择\代码\GameTest\matrix.h
     文件         898  2016-11-30 21:10  拾取与选择\代码\GameTest\npc.cpp
     文件         321  2016-11-30 20:56  拾取与选择\代码\GameTest\npc.h
............此处省略66个文件信息

评论

共有 条评论

相关资源