mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 02:56:38 +00:00 
			
		
		
		
	make spherical screenshot class
This commit is contained in:
		
							parent
							
								
									5afe02505b
								
							
						
					
					
						commit
						3be9e2ee95
					
				
					 1 changed files with 31 additions and 5 deletions
				
			
		|  | @ -622,8 +622,34 @@ namespace MWRender | ||||||
|         mutable bool mDone; |         mutable bool mDone; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     class SphericalScreenshot | ||||||
|  |     { | ||||||
|  |     public: | ||||||
|  |         SphericalScreenshot(int size)  | ||||||
|  |         { | ||||||
|  |             mSize = size; | ||||||
|  | 
 | ||||||
|  |             for (int i = 0; i < 6; ++i) | ||||||
|  |                 mImages.push_back(new osg::Image); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         osg::Image *getImage(int index) | ||||||
|  |         { | ||||||
|  |             return mImages[index].get(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |     protected: | ||||||
|  |         std::vector<osg::ref_ptr<osg::Image>> mImages; | ||||||
|  |         int mSize; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|     void RenderingManager::screenshot360(osg::Image* image, int w) |     void RenderingManager::screenshot360(osg::Image* image, int w) | ||||||
|     { |     { | ||||||
|  |         int resultW = 1024; | ||||||
|  |         int resultH = 768; | ||||||
|  | 
 | ||||||
|  |         SphericalScreenshot s(w); | ||||||
|  | 
 | ||||||
|         osg::Vec3 directions[6] = { |         osg::Vec3 directions[6] = { | ||||||
|           osg::Vec3(0,0,-1), |           osg::Vec3(0,0,-1), | ||||||
|           osg::Vec3(-1,0,0), |           osg::Vec3(-1,0,0), | ||||||
|  | @ -641,14 +667,14 @@ namespace MWRender | ||||||
| 
 | 
 | ||||||
|         for (int i = 0; i < 6; i++)      // for each cube side
 |         for (int i = 0; i < 6; i++)      // for each cube side
 | ||||||
|         { |         { | ||||||
|             osg::ref_ptr<osg::Image> sideImage (new osg::Image); |             osg::Image *sideImage = s.getImage(i); | ||||||
|             screenshot(sideImage.get(),w,w,directions[i]); |             screenshot(sideImage,w,w,directions[i]); | ||||||
| 
 | 
 | ||||||
|             if (i == 0) |             if (i == 0) | ||||||
|                 image->allocateImage(w * 6,w,sideImage->r(),sideImage->getPixelFormat(),sideImage->getDataType()); |                 //image->allocateImage(resultW,resultH,sideImage->r(),sideImage->getPixelFormat(),sideImage->getDataType());
 | ||||||
|  |                 image->allocateImage(6 * w,w,sideImage->r(),sideImage->getPixelFormat(),sideImage->getDataType()); | ||||||
| 
 | 
 | ||||||
|             osg::copyImage(sideImage.get(),0,0,0,sideImage->s(),sideImage->t(),sideImage->r(), |             osg::copyImage(sideImage,0,0,0,sideImage->s(),sideImage->t(),sideImage->r(),image,w * i,0,0); | ||||||
|                            image,w * i,0,0); |  | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (mCamera->isFirstPerson()) |         if (mCamera->isFirstPerson()) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue