mirror of https://github.com/axmolengine/axmol.git
6b27f014fc
* Remove undrawn quads from the skybox mesh CCSkybox had been implemented using a combination of two inconsistent techniques. The rendering was being achieved via use of the vertex shader's inherent support for cubemaps. That technique requires only a single screen-covering quad, but the implemtation defined a cube. Defining a cube mesh would be appropriate if one were simply mapping the cubemap's 6 textures to faces, but is unnecessary if using the shader's cubemap feature. Not only was the use of a cube mesh unnecessary, but the particular way the cube was defined and used meant that only one face would ever contribute to the rendering. One of the other faces would always be culled and the other four would be viewed edge on, mapping the the infinitesimally thin lines defining the edges of the screen. This commit simply removes the never-rendered faces, and adds comments explaining the technique. * Within test code, remove setScale calls applied to skyboxes. A Skybox is defined in such a way that it's position, rotation and scaling has no effect on it's rendering, so setScale has no effect. The calls are removed from test code to avoid confusing anyone using it as a template for their own programs. * Make the Skybox correctly account for the camera's fov The Skybox does not use the model/view and projection matricies. Instead a single quad that maps exactly to the screen is rendered and the camera's world matrix is passed into a shader that renders using cubemap lookups. The way that works hardwires the fov to 90deg in both the horizontal and vertical. That shows up particularly badly when the camera is pointed directly downwards and rotated: the image deforms as it rotates. This commit corrects the problem by using scaling factors from the camera's projection matrix to prescale the matrix passed into the shader. |
||
---|---|---|
.. | ||
Scene3DTest.cpp | ||
Scene3DTest.h |