mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-20 03:16:10 +00:00
- Added support for more than one shader
- Some methods renamed - Adjusted some accelerators keys - Fixed up minor visual issues
This commit is contained in:
parent
b04772047c
commit
7802cec136
@ -24,6 +24,12 @@
|
||||
History
|
||||
|
||||
$Log$
|
||||
Revision 1.59 2005/12/22 20:01:23 glvertex
|
||||
- Added support for more than one shader
|
||||
- Some methods renamed
|
||||
- Adjusted some accelerators keys
|
||||
- Fixed up minor visual issues
|
||||
|
||||
Revision 1.58 2005/12/22 10:33:37 vannini
|
||||
Removed old code
|
||||
On SaveSnapshotDialog, "Save" button is default
|
||||
@ -242,7 +248,7 @@ using namespace vcg;
|
||||
GLArea::GLArea(QWidget *parent)
|
||||
: QGLWidget(parent)
|
||||
{
|
||||
iRender=0; //MeshRender support
|
||||
iRenderer=0; //Shader support
|
||||
iDecoratorsList=0;
|
||||
currentTime=0;
|
||||
lastTime=0;
|
||||
@ -254,6 +260,7 @@ GLArea::GLArea(QWidget *parent)
|
||||
takeSnapTile=false;
|
||||
infoAreaVisible = false;
|
||||
trackBallVisible = true;
|
||||
currentSharder = NULL;
|
||||
time.start();
|
||||
}
|
||||
|
||||
@ -262,12 +269,12 @@ GLArea::GLArea(QWidget *parent)
|
||||
void GLArea::displayModelInfo()
|
||||
{
|
||||
QString strMessage;
|
||||
QString strVertex="Vertex "+QString("").setNum(mm->cm.vert.size(),10);
|
||||
QString strTriangle="Triangle "+QString("").setNum(mm->cm.face.size(),10);
|
||||
QString strVertex="Vertices "+QString("").setNum(mm->cm.vert.size(),10);
|
||||
QString strTriangle="Faces "+QString("").setNum(mm->cm.face.size(),10);
|
||||
//strVertex+=strVertex.setNum(mm->cm.vert.size(),10);
|
||||
//strTriangle.setNum(mm->cm.face.size(),10);
|
||||
renderText(currentWidth-currentWidth*0.15,currentHeight-25,strVertex);
|
||||
renderText(currentWidth-currentWidth*0.15,currentHeight-45,strTriangle);
|
||||
renderText(currentWidth-currentWidth*0.15,currentHeight-45,strVertex);
|
||||
renderText(currentWidth-currentWidth*0.15,currentHeight-30,strTriangle);
|
||||
}
|
||||
|
||||
|
||||
@ -284,16 +291,12 @@ void GLArea::initializeGL()
|
||||
{
|
||||
glShadeModel(GL_SMOOTH);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
//glEnable(GL_CULL_FACE);
|
||||
glEnable(GL_NORMALIZE);
|
||||
|
||||
GLfloat pfront[] = {0,0,1,0};
|
||||
|
||||
glLightfv(GL_LIGHT0,GL_POSITION,pfront);
|
||||
glEnable(GL_LIGHT0);
|
||||
|
||||
/*glLightfv(GL_LIGHT1,GL_POSITION,pback);
|
||||
glLightfv(GL_LIGHT1,GL_DIFFUSE,l_diffuseFancy);*/
|
||||
glEnable(GL_LIGHTING);
|
||||
}
|
||||
|
||||
@ -397,7 +400,6 @@ void GLArea::paintGL()
|
||||
GLint old_matrixMode;
|
||||
lastTime=time.elapsed();
|
||||
initTexture();
|
||||
glDisable(GL_TEXTURE_2D); // FIX FIX FIX to move in trimesh.h ?
|
||||
glClearColor(1.0,1.0,1.0,0.0); //vannini: alpha was 1.0
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
glLoadIdentity();
|
||||
@ -426,8 +428,6 @@ void GLArea::paintGL()
|
||||
trackball.Apply(trackBallVisible && !takeSnapTile);
|
||||
|
||||
glColor3f(1.f,1.f,1.f);
|
||||
//Box3f bb(Point3f(-.5,-.5,-.5),Point3f(.5,.5,.5));
|
||||
//glBoxWire(bb);
|
||||
float d=2.0f/mm->cm.bbox.Diag();
|
||||
glScale(d);
|
||||
glTranslate(-mm->cm.bbox.Center());
|
||||
@ -452,13 +452,15 @@ void GLArea::paintGL()
|
||||
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE);
|
||||
}
|
||||
|
||||
if(iRender) {
|
||||
iRender->Render(new QAction("Toon Shader", this), *mm, rm, this);
|
||||
if(iRenderer && currentSharder) {
|
||||
//iRender->Render(new QAction("Toon Shader", this), *mm, rm, this);
|
||||
iRenderer->Render(currentSharder, *mm, rm, this);
|
||||
|
||||
}
|
||||
|
||||
mm->Render(rm.drawMode,rm.colorMode,rm.textureMode);
|
||||
|
||||
if(iRender) {
|
||||
if(iRenderer) {
|
||||
glUseProgramObjectARB(0);
|
||||
}
|
||||
|
||||
@ -508,22 +510,19 @@ void GLArea::paintGL()
|
||||
glColor4f(1,1,1,1);
|
||||
if(logVisible)
|
||||
log.glDraw(this,0,3);
|
||||
// More info to add.....
|
||||
|
||||
displayModelInfo();
|
||||
|
||||
currentTime=time.elapsed();
|
||||
deltaTime=currentTime-lastTime;
|
||||
updateFps();
|
||||
if ((cfps>0) && (cfps<200)) renderFps();
|
||||
displayModelInfo();
|
||||
|
||||
|
||||
glPopAttrib();
|
||||
glPopMatrix();
|
||||
|
||||
}
|
||||
|
||||
// ==============================
|
||||
|
||||
}
|
||||
|
||||
void GLArea::resizeGL(int _width, int _height)
|
||||
@ -608,23 +607,25 @@ void GLArea::setColorMode(vcg::GLW::ColorMode mode)
|
||||
void GLArea::initTexture()
|
||||
{
|
||||
if(!mm->cm.textures.empty() && mm->glw.TMId.empty()){
|
||||
for(unsigned int i =0; i< mm->cm.textures.size();++i){
|
||||
QImage img, imgGL;
|
||||
img.load(mm->cm.textures[i].c_str());
|
||||
imgGL=convertToGLFormat(img);
|
||||
qDebug("loaded texture %s. with id %i w %i h %i",mm->cm.textures[i].c_str(),i, imgGL.width(), imgGL.height());
|
||||
mm->glw.TMId.push_back(0);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glGenTextures( 1, &(mm->glw.TMId.back()) );
|
||||
glBindTexture( GL_TEXTURE_2D, mm->glw.TMId.back() );
|
||||
glTexImage2D( GL_TEXTURE_2D, 0, 3, imgGL.width(), imgGL.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, imgGL.bits() );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
|
||||
qDebug("loaded texture %s. in %i",mm->cm.textures[i].c_str(),mm->glw.TMId[i]);
|
||||
}
|
||||
}
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
for(unsigned int i =0; i< mm->cm.textures.size();++i){
|
||||
QImage img, imgGL;
|
||||
img.load(mm->cm.textures[i].c_str());
|
||||
imgGL=convertToGLFormat(img);
|
||||
qDebug("loaded texture %s. with id %i w %i h %i",mm->cm.textures[i].c_str(),i, imgGL.width(), imgGL.height());
|
||||
mm->glw.TMId.push_back(0);
|
||||
|
||||
glGenTextures( 1, &(mm->glw.TMId.back()) );
|
||||
glBindTexture( GL_TEXTURE_2D, mm->glw.TMId.back() );
|
||||
glTexImage2D( GL_TEXTURE_2D, 0, 3, imgGL.width(), imgGL.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, imgGL.bits() );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
|
||||
qDebug("loaded texture %s. in %i",mm->cm.textures[i].c_str(),mm->glw.TMId[i]);
|
||||
}
|
||||
}
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
}
|
||||
|
||||
void GLArea::setTextureMode(vcg::GLW::TextureMode mode)
|
||||
|
||||
@ -24,6 +24,12 @@
|
||||
History
|
||||
|
||||
$Log$
|
||||
Revision 1.39 2005/12/22 20:01:23 glvertex
|
||||
- Added support for more than one shader
|
||||
- Some methods renamed
|
||||
- Adjusted some accelerators keys
|
||||
- Fixed up minor visual issues
|
||||
|
||||
Revision 1.38 2005/12/14 22:25:26 cignoni
|
||||
Added preliminary supprot for editing/selection plugins.
|
||||
|
||||
@ -285,11 +291,9 @@ public:
|
||||
void resetTrackBall();
|
||||
list<pair<QAction *,MeshDecorateInterface *> > *iDecoratorsList;
|
||||
|
||||
//shader support
|
||||
MeshRenderInterface *iRender;
|
||||
void setRender(MeshRenderInterface *rend){ iRender = rend; }
|
||||
MeshRenderInterface * getRender() { return iRender; }
|
||||
MeshEditInterface *iEdit;
|
||||
void setRenderer(MeshRenderInterface *rend, QAction *shader){ iRenderer = rend; currentSharder = shader;}
|
||||
MeshRenderInterface * getRenderer() { return iRenderer; }
|
||||
|
||||
void setEdit(MeshEditInterface *edit){ iEdit = edit; }
|
||||
|
||||
protected:
|
||||
@ -310,6 +314,14 @@ private:
|
||||
bool logVisible; // Prints out log infos ?
|
||||
bool infoAreaVisible; // Draws the lower info area ?
|
||||
bool trackBallVisible; // Draws the trackball ?
|
||||
|
||||
//shader support
|
||||
MeshRenderInterface *iRenderer;
|
||||
QAction *currentSharder;
|
||||
|
||||
// Editing support
|
||||
MeshEditInterface *iEdit;
|
||||
|
||||
RenderMode rm;
|
||||
ColorSetting cs;
|
||||
float cfps;
|
||||
@ -324,7 +336,6 @@ private:
|
||||
QImage tileBuffer;
|
||||
bool takeSnapTile;
|
||||
int vpWidth, vpHeight, tileCol, tileRow, totalCols, totalRows;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -23,6 +23,12 @@
|
||||
/****************************************************************************
|
||||
History
|
||||
$Log$
|
||||
Revision 1.51 2005/12/22 20:01:23 glvertex
|
||||
- Added support for more than one shader
|
||||
- Some methods renamed
|
||||
- Adjusted some accelerators keys
|
||||
- Fixed up minor visual issues
|
||||
|
||||
Revision 1.50 2005/12/19 19:03:06 davide_portelli
|
||||
Now decorations in render menu are consistent when we have tiled windows.
|
||||
|
||||
@ -183,6 +189,7 @@ private:
|
||||
QMenu *filterMenu;
|
||||
QMenu *editMenu;
|
||||
//Render Menu and SubMenu ////
|
||||
QMenu *shadersMenu;
|
||||
QMenu *renderMenu;
|
||||
QMenu *renderModeMenu;
|
||||
QMenu *lightingModeMenu;
|
||||
|
||||
@ -24,6 +24,12 @@
|
||||
History
|
||||
|
||||
$Log$
|
||||
Revision 1.32 2005/12/22 20:01:23 glvertex
|
||||
- Added support for more than one shader
|
||||
- Some methods renamed
|
||||
- Adjusted some accelerators keys
|
||||
- Fixed up minor visual issues
|
||||
|
||||
Revision 1.31 2005/12/19 19:03:31 davide_portelli
|
||||
Now decorations in render menu are consistent when we have tiled windows.
|
||||
|
||||
@ -343,7 +349,7 @@ void MainWindow::createActions()
|
||||
saveAsAct->setShortcut(Qt::CTRL+Qt::Key_S);
|
||||
connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs()));
|
||||
|
||||
saveSnapshotAct = new QAction(QIcon(":/images/save.png"),tr("&Save snapshot"), this);
|
||||
saveSnapshotAct = new QAction(QIcon(":/images/save.png"),tr("Save snapsho&t"), this);
|
||||
connect(saveSnapshotAct, SIGNAL(triggered()), this, SLOT(saveSnapshot()));
|
||||
|
||||
for (int i = 0; i < MAXRECENTFILES; ++i) {
|
||||
@ -472,7 +478,7 @@ void MainWindow::createActions()
|
||||
setCustomizeAct = new QAction(tr("&Options..."),this);
|
||||
connect(setCustomizeAct, SIGNAL(triggered()), this, SLOT(setCustomize()));
|
||||
|
||||
setSaveMaskObjAct = new QAction(tr("&Options Save Obj"),this);
|
||||
setSaveMaskObjAct = new QAction(tr("Ob&j saving options..."),this);
|
||||
connect(setSaveMaskObjAct, SIGNAL(triggered()), this, SLOT(setSaveMaskObj()));
|
||||
|
||||
//////////////Action Menu About ///////////////////////////////////////////////////////////////////////////
|
||||
@ -532,7 +538,9 @@ void MainWindow::createMenus()
|
||||
lightingModeMenu->addAction(setDoubleLightingAct);
|
||||
lightingModeMenu->addAction(setFancyLightingAct);
|
||||
|
||||
colorModeMenu=renderMenu->addMenu(tr("Color"));
|
||||
colorModeMenu = renderMenu->addMenu(tr("Color"));
|
||||
shadersMenu = renderMenu->addMenu(tr("Shaders"));
|
||||
shadersMenu->addAction("None",this,SLOT(applyRenderMode()));
|
||||
|
||||
//////////////////// Menu View ////////////////////////////////////////////////////////////////////////////
|
||||
viewMenu = menuBar()->addMenu(tr("&View"));
|
||||
@ -606,7 +614,7 @@ void MainWindow::loadPlugins()
|
||||
|
||||
MeshRenderInterface *iRender = qobject_cast<MeshRenderInterface *>(plugin);
|
||||
if (iRender)
|
||||
addToMenu(iRender->actions(), renderMenu, SLOT(applyRenderMode()));
|
||||
addToMenu(iRender->actions(), shadersMenu, SLOT(applyRenderMode()));
|
||||
|
||||
MeshEditInterface *iEdit = qobject_cast<MeshEditInterface *>(plugin);
|
||||
if (iEdit)
|
||||
|
||||
@ -24,6 +24,12 @@
|
||||
History
|
||||
|
||||
$Log$
|
||||
Revision 1.54 2005/12/22 20:01:23 glvertex
|
||||
- Added support for more than one shader
|
||||
- Some methods renamed
|
||||
- Adjusted some accelerators keys
|
||||
- Fixed up minor visual issues
|
||||
|
||||
Revision 1.53 2005/12/22 15:18:19 mariolatronico
|
||||
passed GLA() to applyFilter in order to use log
|
||||
|
||||
@ -485,16 +491,29 @@ void MainWindow::applyEditMode()
|
||||
void MainWindow::applyRenderMode()
|
||||
{
|
||||
QAction *action = qobject_cast<QAction *>(sender()); // find the action which has sent the signal
|
||||
|
||||
if(action->text() == tr("None"))
|
||||
{
|
||||
GLA()->log.Log(GLLogStream::Info,"No Shader");
|
||||
GLA()->setRenderer(0,0); //vertex and fragment programs not supported
|
||||
return;
|
||||
}
|
||||
|
||||
// Make the call to the plugin core
|
||||
MeshRenderInterface *iRenderTemp = qobject_cast<MeshRenderInterface *>(action->parent());
|
||||
iRenderTemp->Init(action,*(GLA()->mm),GLA());
|
||||
|
||||
if(iRenderTemp->isSupported()) {
|
||||
GLA()->setRender(iRenderTemp);
|
||||
} else {
|
||||
GLA()->setRender(0); //vertex and fragment programs not supported
|
||||
if(iRenderTemp->isSupported())
|
||||
{
|
||||
GLA()->setRenderer(iRenderTemp,action);
|
||||
GLA()->log.Log(GLLogStream::Info,"%s",action->text().toLocal8Bit().constData()); // Prints out action name
|
||||
}
|
||||
GLA()->log.Log(GLLogStream::Info,"%s",action->text().toLocal8Bit().constData()); // Prints out action name
|
||||
else
|
||||
{
|
||||
GLA()->setRenderer(0,0); //vertex and fragment programs not supported
|
||||
GLA()->log.Log(GLLogStream::Warning,"Shader not supported!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -504,10 +523,10 @@ void MainWindow::applyColorMode()
|
||||
MeshColorizeInterface *iColorTemp = qobject_cast<MeshColorizeInterface *>(action->parent());
|
||||
iColorTemp->Compute(action,*(GLA()->mm ),GLA()->getCurrentRenderMode(), GLA());
|
||||
if (action->isChecked()) {
|
||||
action->setChecked(true);
|
||||
//action->setChecked(true);
|
||||
GLA()->log.Log(GLLogStream::Info,"Applied colorize %s",action->text().toLocal8Bit().constData());
|
||||
} else {
|
||||
action->setChecked(false);
|
||||
//action->setChecked(false);
|
||||
GLA()->log.Log(GLLogStream::Info,"Turning off colorize %s",action->text().toLocal8Bit().constData());
|
||||
}
|
||||
}
|
||||
@ -556,15 +575,13 @@ void MainWindow::setLight()
|
||||
void MainWindow::setDoubleLighting()
|
||||
{
|
||||
const RenderMode &rm=GLA()->getCurrentRenderMode();
|
||||
if (rm.doubleSideLighting) GLA()->setLightMode(false,LDOUBLE);
|
||||
else GLA()->setLightMode(true,LDOUBLE);
|
||||
GLA()->setLightMode(!rm.doubleSideLighting,LDOUBLE);
|
||||
}
|
||||
|
||||
void MainWindow::setFancyLighting()
|
||||
{
|
||||
const RenderMode &rm=GLA()->getCurrentRenderMode();
|
||||
if (rm.fancyLighting) GLA()->setLightMode(false,LFANCY);
|
||||
else GLA()->setLightMode(true,LFANCY);
|
||||
GLA()->setLightMode(!rm.fancyLighting,LFANCY);
|
||||
}
|
||||
|
||||
void MainWindow::toggleBackFaceCulling()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user