Revision: 19393
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19393
Author:   dfelinto
Date:     2009-03-24 06:49:42 +0100 (Tue, 24 Mar 2009)

Log Message:
-----------
missing files from last review

Modified Paths:
--------------
    branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp

Added Paths:
-----------
    branches/ge_dome/source/gameengine/Ketsji/KX_Dome.h

Property Changed:
----------------
    branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp

Modified: branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp
===================================================================
--- branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp       2009-03-24 
05:43:20 UTC (rev 19392)
+++ branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp       2009-03-24 
05:49:42 UTC (rev 19393)
@@ -1,1766 +1,1766 @@
-/* $Id$
------------------------------------------------------------------------------
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU Lesser General Public License as published by the Free 
Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 
details.
-
-You should have received a copy of the GNU Lesser General Public License along 
with
-this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-Place - Suite 330, Boston, MA 02111-1307, USA, or go to
-http://www.gnu.org/copyleft/lesser.txt.
-
-Contributor(s): Dalai Felinto
-
-This code is originally inspired on some of the ideas and codes from Paul 
Bourke.
-Developed as part of a Research and Development project for SAT - La 
Soci\xE9t\xE9 des arts technologiques.
------------------------------------------------------------------------------
-*/
-
-#include <PyObjectPlus.h>
-#include <structmember.h>
-#include <float.h>
-#include <math.h>
-
-
-#include <BIF_gl.h>
-
-#include "KX_PythonInit.h"
-#include "DNA_scene_types.h"
-#include "RAS_CameraData.h"
-#include "BLI_arithb.h"
-
-#include "KX_Dome.h"
-
-#include "GL/glew.h"
-#include "GPU_extensions.h"
-#include "GL/glu.h" //XXX temporary, I don't think Blender can use glu.h in 
its files!!!
-
-// constructor
-KX_Dome::KX_Dome (
-       RAS_ICanvas* canvas,
-    /// rasterizer
-    RAS_IRasterizer* rasterizer,
-    /// render tools
-    RAS_IRenderTools* rendertools,
-    /// engine
-    KX_KetsjiEngine* engine,
-       
-       float size, //size for adjustments
-       short res, //resolution
-       short mode, //mode - fisheye, truncated, warped, panoramic, ...
-       short angle
-//     float offset //offset distance of the camera
-
-):
-       m_canvas(canvas),
-       m_rasterizer(rasterizer),
-       m_rendertools(rendertools),
-       m_engine(engine),
-       m_clip(100.f),
-       m_drawingmode(engine->GetDrawType()),
-       m_size(size),
-       m_resolution(res),
-       m_mode(mode),
-       m_angle(angle)
-//     m_offset(offset)
-
-{
-       if (mode > DOME_NUM_MODES)
-               m_mode = DOME_FISHEYE;
-       
-       //setting the viewport size
-       GLuint  viewport[4]={0};
-       glGetIntegerv(GL_VIEWPORT,(GLint *)viewport);
-
-       SetViewPort(viewport);
-       CalculateImageSize(); //it could be called from m_dome->SetViewPort()
-
-       //4 == 180\xBA; 5 == 250\xBA; 6 == 360\xBA
-       m_numfaces = 5;
-//     if (m_angle > 250)
-//             m_angle = 250;
-
-       switch(m_mode){
-               case DOME_FISHEYE:
-                       if (m_angle <= 180){
-                               cubetop.resize(1);
-                               cubebottom.resize(1);
-                               cubeleft.resize(2);
-                               cuberight.resize(2);
-
-                               CreateMeshDome180(m_resolution);
-                               m_numfaces = 4;
-                       }else if (m_angle > 180 && m_angle <= 250){
-                               cubetop.resize(2);
-                               cubebottom.resize(2);
-                               cubeleft.resize(2);
-                               cubefront.resize(2);
-                               cuberight.resize(2);
-
-                               CreateMeshDome250(m_resolution);
-                               m_numfaces = 5;
-                       }else{
-                               cubetop.resize(2);
-                               cubebottom.resize(2);
-                               cubeleft.resize(2);
-                               cubefront.resize(2);
-                               cuberight.resize(2);
-                               cubeback.resize(2);
-
-                               CreateMeshDome250(m_resolution);
-                               m_numfaces = 6;
-                       }
-                       break;
-               case DOME_TRUNCATED:
-                       cubetop.resize(1);
-                       cubebottom.resize(1);
-                       cubeleft.resize(2);
-                       cuberight.resize(2);
-
-                       m_angle = 180;
-                       CreateMeshDome180(m_resolution);
-                       m_numfaces = 4;
-                       break;
-               case DOME_PANORAM_SPH:
-                       cubeleft.resize(2);
-                       cubeleftback.resize(2);
-                       cuberight.resize(2);
-                       cuberightback.resize(2);
-
-                       m_angle = 360;
-                       CreateMeshPanorama();
-                       m_numfaces = 4;
-                       break;
-               case DOME_OFFSET:
-                       //the same as DOME_FISHEYE > 250\xBA
-                       cubetop.resize(2);
-                       cubebottom.resize(2);
-                       cubeleft.resize(2);
-                       cubefront.resize(2);
-                       cuberight.resize(2);
-                       cubeback.resize(2);
-
-//             m_offset = 0.99;
-                       m_angle = 360;
-                       CreateMeshDome250(m_resolution);
-                       m_numfaces = 6;
-                       break;
-               default: // temporary
-                       cubetop.resize(1);
-                       cubebottom.resize(1);
-                       cubeleft.resize(2);
-                       cuberight.resize(2);
-                       m_numfaces = 4;
-                       break;
-       }
-
-       CalculateCameraOrientation();
-
-       CreateGLImages();
-       //openGL check 
-       //XXX to-do: check if fbo and display list are supported
-       if(GLEW_VERSION_1_1)
-               dlistSupported=true;
-
-       if(GPU_extensions_minimum_support())
-               fboSupported=true;
-
-       fboSupported = false;//not implemented yet
-
-       if(fboSupported)
-               CreateFBO();
-
-       if(dlistSupported)
-               CreateDL();
-}
-
-// destructor
-KX_Dome::~KX_Dome (void)
-{
-//     if(glIsTexture(domefacesId[0]))
-       glDeleteTextures(m_numfaces, (GLuint*)&domefacesId);
-
-       // clean up FBO, RBO
-       if(fboSupported)
-       {
-               //XXX fix it
-               for (int i=0; i< m_numfaces;i++){
-                       glDeleteFramebuffersEXT(m_numfaces, &fboId[0]);
-                       glDeleteRenderbuffersEXT(m_numfaces, &rboId[0]);
-               }
-       }
-       if(dlistSupported)
-               glDeleteLists(dlistId, (GLsizei) m_numfaces);
-}
-
-void KX_Dome::CreateGLImages(){
-       glGenTextures(m_numfaces, (GLuint*)&domefacesId);
-       
-       for (int j=0;j<m_numfaces;j++){
-               glBindTexture(GL_TEXTURE_2D, domefacesId[j]);
-               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16, m_imagesize, 
m_imagesize, 0, GL_RGBA,
-                               GL_UNSIGNED_BYTE, 0);
-               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 
GL_LINEAR);
-               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 
GL_LINEAR);
-               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 
GL_CLAMP_TO_EDGE);
-               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 
GL_CLAMP_TO_EDGE);
-       }
-}
-
-void KX_Dome::CalculateImageSize(void)
-{
-       // find the closest power of 2 smaller than the viewport size
-       // this is a cheap solution when FBO is not supported
-
-       short canvaswidth = m_canvas->GetWidth();
-       short canvasheight = m_canvas->GetHeight();
-       short texturewidth=0, textureheight =0;
-
-       GLint i;
-       i = 0;
-       while ((1 << i) < canvaswidth)
-               i++;
-       texturewidth = (1 << (i-1));
-
-       // Now for height
-       i = 0;
-       while ((1 << i) < canvasheight)
-               i++;
-       textureheight = (1 << (i-1));
-
-       m_imagesize = (texturewidth > textureheight?textureheight:texturewidth);
-}
-
-/*
-void KX_Dome::CalculateImageSize(void)
-{
-       // higher resolution than the uncommented CalculateImageSize function. 
Using non-power of 2 textures. not using it
-
-       short canvas_width = m_viewport.GetWidth();
-       short canvas_height = m_viewport.GetHeight();
-       
-       m_imagesize = (canvas_width > canvas_height?canvas_height:canvas_width);
-}
-//*/
-void KX_Dome::CreateFBO(){
-// not using it right now. I had performance issues when trying to use that. I 
should try again later.
-// create a framebuffer object, you need to delete them when program exits.
-
-       glGenFramebuffersEXT(m_numfaces, &fboId[0]);
-       glGenRenderbuffersEXT(m_numfaces, &rboId[0]);
-
-       for (int i=0;i<m_numfaces;i++){
-               glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId[i]);
-
-               // create a renderbuffer object to store depth info
-               // NOTE: A depth renderable image should be attached the FBO 
for depth test.
-               // If we don't attach a depth renderable image to the FBO, then
-               // the rendering output will be corrupted because of missing 
depth test.
-               // If you also need stencil test for your rendering, then you 
must
-               // attach additional image to the stencil attachement point, 
too.
-//             glGenRenderbuffersEXT(1, &rboId);
-               glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, rboId[i]);
-               glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, 
GL_DEPTH_COMPONENT, m_imagesize, m_imagesize);
-               glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
-
-               // attach a texture to FBO color attachment 
-               // I wanna change this per render, pre bindimage I guess
-               glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, 
GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, domefacesId[i], 0);
-
-               // attach a renderbuffer to depth attachment point
-               glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, 
GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, rboId[i]);
-
-               //@ disable color buffer if you don't attach any color buffer 
image,
-               //@ for example, rendering depth buffer only to a texture.
-               //@ Otherwise, glCheckFramebufferStatusEXT will not be complete.
-               //glDrawBuffer(GL_NONE);
-               //glReadBuffer(GL_NONE);
-
-               // check FBO status
-               /*
-                       printFramebufferInfo();
-                       bool status = checkFramebufferStatus();
-                       if(!status)
-                               fboUsed = false;
-               */
-       }
-       glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
-}
-
-void KX_Dome::CreateDL(){
-       int i,j;
-
-       dlistId = glGenLists((GLsizei) m_numfaces);
-       if (dlistId != 0) {
-               if(m_mode == DOME_FISHEYE || m_mode == DOME_TRUNCATED || m_mode 
== DOME_WARPED || m_mode == DOME_OFFSET){
-                       glNewList(dlistId, GL_COMPILE);
-                               GLDrawTriangles(cubetop, nfacestop);
-                       glEndList();
-
-                       glNewList(dlistId+1, GL_COMPILE);
-                               GLDrawTriangles(cubebottom, nfacesbottom);
-                       glEndList();
-
-                       glNewList(dlistId+2, GL_COMPILE);
-                               GLDrawTriangles(cubeleft, nfacesleft);
-                       glEndList();
-
-                       glNewList(dlistId+3, GL_COMPILE);
-                               GLDrawTriangles(cuberight, nfacesright);
-                       glEndList();
-
-                       if (m_angle > 180){
-                               glNewList(dlistId+4, GL_COMPILE);
-                                       GLDrawTriangles(cubefront, nfacesfront);
-                               glEndList();
-                       }
-               }
-               else if (m_mode == DOME_PANORAM_SPH){
-                       glNewList(dlistId, GL_COMPILE);
-                               GLDrawTriangles(cubeleft, nfacesleft);
-                       glEndList();
-
-                       glNewList(dlistId+1, GL_COMPILE);
-                               GLDrawTriangles(cuberight, nfacesright);
-                       glEndList();
-
-                       glNewList(dlistId+3, GL_COMPILE);
-                               GLDrawTriangles(cubeleftback, nfacesleftback);
-                       glEndList();
-
-                       glNewList(dlistId+2, GL_COMPILE);
-                               GLDrawTriangles(cuberightback, nfacesrightback);
-                       glEndList();
-               }
-
-               //clearing the vectors 
-               cubetop.clear();
-               cubebottom.clear();
-               cuberight.clear();
-               cubeleft.clear();
-               cubefront.clear();
-               cubeback.clear();
-               cubeleftback.clear();
-               cuberightback.clear();
-
-       } else // genList failed
-               dlistSupported = false;
-}
-
-void KX_Dome::GLDrawTriangles(vector <DomeFace>& face, int nfaces)
-{
-       int i,j;
-       glBegin(GL_TRIANGLES);
-               for (i=0;i<nfaces;i++) {
-                       for (j=0;j<3;j++) {
-                               glTexCoord2f(face[i].u[j],face[i].v[j]);
-                               
glVertex3f((GLfloat)face[i].verts[j][0],(GLfloat)face[i].verts[j][1],(GLfloat)face[i].verts[j][2]);
-                       }
-               }
-       glEnd();
-}

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to