资源简介
使用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个文件信息
评论
共有 条评论