2014-04-29 01:32:40 +02:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
/*
|
|
|
|
* This file is part of the LibreOffice project.
|
|
|
|
*
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
*/
|
|
|
|
|
2014-05-15 12:06:32 +02:00
|
|
|
#ifndef INCLUDED_CHART2_SOURCE_VIEW_INC_GL3DRENDERER_HXX
|
|
|
|
#define INCLUDED_CHART2_SOURCE_VIEW_INC_GL3DRENDERER_HXX
|
2014-04-29 01:32:40 +02:00
|
|
|
|
2014-04-29 02:10:20 +02:00
|
|
|
#include "glm/glm.hpp"
|
|
|
|
#include "glm/gtx/transform.hpp"
|
|
|
|
#include "glm/gtx/euler_angles.hpp"
|
|
|
|
#include "glm/gtx/quaternion.hpp"
|
|
|
|
|
|
|
|
#include <com/sun/star/awt/Point.hpp>
|
2014-05-26 20:34:44 +01:00
|
|
|
#include <boost/shared_array.hpp>
|
2014-04-29 02:10:20 +02:00
|
|
|
#include <tools/gen.hxx>
|
|
|
|
|
2014-05-05 18:12:03 +08:00
|
|
|
#include <vcl/bitmapex.hxx>
|
2014-04-29 02:10:20 +02:00
|
|
|
|
2014-04-29 01:32:40 +02:00
|
|
|
#include <vector>
|
2014-04-29 02:10:20 +02:00
|
|
|
#include <list>
|
|
|
|
#include <map>
|
|
|
|
|
|
|
|
#define MAX_LIGHT_NUM 8
|
2014-04-29 01:32:40 +02:00
|
|
|
|
|
|
|
namespace chart {
|
|
|
|
|
|
|
|
namespace opengl3D {
|
|
|
|
|
2014-04-29 02:10:20 +02:00
|
|
|
struct PosVecf3
|
|
|
|
{
|
|
|
|
float x;
|
|
|
|
float y;
|
|
|
|
float z;
|
|
|
|
};
|
|
|
|
|
2014-04-29 01:32:40 +02:00
|
|
|
typedef std::vector <glm::vec3> Vertices3D;
|
|
|
|
typedef std::vector <glm::vec2> UVs3D;
|
|
|
|
typedef std::vector <glm::vec3> Normals3D;
|
|
|
|
|
2014-05-10 04:29:20 +02:00
|
|
|
struct MaterialParameters
|
2014-04-29 01:32:40 +02:00
|
|
|
{
|
|
|
|
glm::vec4 ambient;
|
|
|
|
glm::vec4 diffuse;
|
|
|
|
glm::vec4 specular;
|
|
|
|
glm::vec4 materialColor;
|
|
|
|
|
2014-04-29 13:09:23 +03:00
|
|
|
bool twoSidesLighting;
|
2014-04-29 01:32:40 +02:00
|
|
|
float shininess;
|
|
|
|
float pad;
|
|
|
|
float pad1;
|
2014-05-10 04:29:20 +02:00
|
|
|
};
|
2014-04-29 01:32:40 +02:00
|
|
|
|
2014-05-10 04:29:20 +02:00
|
|
|
struct LightSource
|
2014-04-29 01:32:40 +02:00
|
|
|
{
|
|
|
|
glm::vec4 lightColor;
|
|
|
|
glm::vec4 positionWorldspace;
|
|
|
|
float lightPower;
|
|
|
|
float pad1;
|
|
|
|
float pad2;
|
|
|
|
float pad3;
|
2014-05-10 04:29:20 +02:00
|
|
|
};
|
2014-04-29 01:32:40 +02:00
|
|
|
|
2014-05-10 04:29:20 +02:00
|
|
|
struct GlobalLights
|
2014-04-29 01:32:40 +02:00
|
|
|
{
|
|
|
|
int lightNum;
|
|
|
|
glm::vec4 ambient;
|
|
|
|
LightSource light[MAX_LIGHT_NUM];
|
2014-05-10 04:29:20 +02:00
|
|
|
};
|
2014-04-29 01:32:40 +02:00
|
|
|
|
2014-05-10 04:29:20 +02:00
|
|
|
struct Polygon3DInfo
|
2014-04-29 01:32:40 +02:00
|
|
|
{
|
2014-04-29 13:09:23 +03:00
|
|
|
bool lineOnly;
|
2014-04-29 01:32:40 +02:00
|
|
|
float lineWidth;
|
2014-04-29 13:09:23 +03:00
|
|
|
bool twoSidesLighting;
|
2014-04-29 01:32:40 +02:00
|
|
|
long fillStyle;
|
|
|
|
glm::vec4 polygonColor;
|
2014-05-21 00:18:13 +02:00
|
|
|
glm::vec4 id;
|
2014-04-29 01:32:40 +02:00
|
|
|
Vertices3D *vertices;
|
|
|
|
Normals3D *normals;
|
2014-05-25 15:19:47 +08:00
|
|
|
std::vector <Vertices3D *> verticesList;
|
|
|
|
std::vector <Normals3D *> normalsList;
|
2014-05-10 04:29:20 +02:00
|
|
|
MaterialParameters material;
|
|
|
|
};
|
2014-04-29 01:32:40 +02:00
|
|
|
|
2014-05-10 04:29:20 +02:00
|
|
|
struct Extrude3DInfo
|
2014-04-29 01:32:40 +02:00
|
|
|
{
|
2014-05-12 02:57:51 +02:00
|
|
|
bool rounded;
|
2014-04-29 13:09:23 +03:00
|
|
|
bool twoSidesLighting;
|
2014-04-29 01:32:40 +02:00
|
|
|
glm::vec4 extrudeColor;
|
2014-05-21 00:18:13 +02:00
|
|
|
glm::vec4 id;
|
2014-05-06 10:45:10 +08:00
|
|
|
float xScale;
|
|
|
|
float yScale;
|
|
|
|
float zScale;
|
2014-04-29 01:32:40 +02:00
|
|
|
float xTransform;
|
|
|
|
float yTransform;
|
|
|
|
float zTransform;
|
2014-05-06 10:45:10 +08:00
|
|
|
glm::mat4 rotation;
|
2014-05-10 04:29:20 +02:00
|
|
|
MaterialParameters material;
|
2014-04-29 01:32:40 +02:00
|
|
|
int startIndex[5];
|
|
|
|
int size[5];
|
|
|
|
int reverse;
|
2014-05-10 04:29:20 +02:00
|
|
|
};
|
2014-04-29 01:32:40 +02:00
|
|
|
|
2014-05-09 05:30:46 +02:00
|
|
|
struct CameraInfo
|
2014-04-29 01:32:40 +02:00
|
|
|
{
|
|
|
|
glm::vec3 cameraPos;
|
|
|
|
glm::vec3 cameraOrg;
|
|
|
|
glm::vec3 cameraUp;
|
2014-05-09 05:34:34 +02:00
|
|
|
|
|
|
|
CameraInfo():
|
2014-05-10 22:35:04 +02:00
|
|
|
cameraUp(glm::vec3(0, 0, 1)) {}
|
2014-05-09 05:30:46 +02:00
|
|
|
};
|
2014-04-29 01:32:40 +02:00
|
|
|
|
2014-05-09 05:30:46 +02:00
|
|
|
struct RoundBarMesh
|
2014-04-29 01:32:40 +02:00
|
|
|
{
|
|
|
|
float topThreshold;
|
|
|
|
float bottomThreshold;
|
|
|
|
int iMeshStartIndices;
|
|
|
|
int iMeshSizes;
|
|
|
|
int iElementStartIndices[5];
|
|
|
|
int iElementSizes[5];
|
2014-05-09 05:30:46 +02:00
|
|
|
};
|
2014-04-29 01:32:40 +02:00
|
|
|
|
|
|
|
struct PackedVertex{
|
|
|
|
glm::vec3 position;
|
|
|
|
glm::vec3 normal;
|
2014-05-09 05:31:42 +02:00
|
|
|
bool operator<(const PackedVertex& that) const{
|
2014-04-29 01:32:40 +02:00
|
|
|
return memcmp((void*)this, (void*)&that, sizeof(PackedVertex))>0;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2014-05-09 05:30:46 +02:00
|
|
|
struct TextInfo
|
2014-05-05 18:12:03 +08:00
|
|
|
{
|
2014-05-21 00:18:13 +02:00
|
|
|
glm::vec4 id;
|
2014-05-05 18:12:03 +08:00
|
|
|
GLuint texture;
|
|
|
|
float vertex[12];
|
2014-05-09 05:30:46 +02:00
|
|
|
};
|
2014-05-05 18:12:03 +08:00
|
|
|
|
2014-05-28 12:43:43 +08:00
|
|
|
struct BatchBarInfo
|
|
|
|
{
|
|
|
|
std::vector <glm::mat4> modelMatrixList;
|
|
|
|
std::vector <glm::mat3> normalMatrixList;
|
|
|
|
std::vector <glm::vec4> colorList;
|
|
|
|
};
|
|
|
|
|
2014-05-08 01:30:30 +02:00
|
|
|
class OpenGL3DRenderer
|
2014-04-29 01:32:40 +02:00
|
|
|
{
|
|
|
|
public:
|
2014-04-29 02:10:20 +02:00
|
|
|
OpenGL3DRenderer();
|
2014-05-09 04:10:19 +02:00
|
|
|
~OpenGL3DRenderer();
|
2014-04-29 02:10:20 +02:00
|
|
|
|
|
|
|
void init();
|
2014-05-12 05:22:52 +02:00
|
|
|
void Set3DSenceInfo(sal_uInt32 color = 255, bool twoSidesLighting = true);
|
|
|
|
void SetLightInfo(bool lightOn, sal_uInt32 color, const glm::vec4& direction);
|
2014-05-12 05:04:40 +02:00
|
|
|
void AddShapePolygon3DObject(sal_uInt32 color, bool lineOnly, sal_uInt32 lineColor,
|
2014-05-21 00:18:13 +02:00
|
|
|
long fillStyle, sal_uInt32 specular, sal_uInt32 nUniqueId);
|
2014-04-29 01:32:40 +02:00
|
|
|
void EndAddShapePolygon3DObject();
|
|
|
|
void AddPolygon3DObjectNormalPoint(float x, float y, float z);
|
|
|
|
void EndAddPolygon3DObjectNormalPoint();
|
|
|
|
void AddPolygon3DObjectPoint(float x, float y, float z);
|
|
|
|
void EndAddPolygon3DObjectPoint();
|
2014-05-21 00:18:13 +02:00
|
|
|
void AddShape3DExtrudeObject(bool roundedCorner, sal_uInt32 color, sal_uInt32 specular, const glm::mat4& modelMatrix, sal_uInt32 nUniqueId);
|
2014-04-29 01:32:40 +02:00
|
|
|
void EndAddShape3DExtrudeObject();
|
2014-05-05 11:54:26 +08:00
|
|
|
void SetSize(const Size& rSize);
|
2014-05-29 02:00:24 +02:00
|
|
|
void SetCameraInfo(const glm::vec3& pos, const glm::vec3& direction, const glm::vec3& up);
|
2014-05-26 20:34:44 +01:00
|
|
|
void CreateTextTexture(const boost::shared_array<sal_uInt8> &bitmapBuf,
|
|
|
|
::Size maSizePixels,
|
2014-05-29 02:00:24 +02:00
|
|
|
const glm::vec3& vTopLeft, const glm::vec3& vTopRight,
|
|
|
|
const glm::vec3& vBottomRight, const glm::vec3& vBottomLeft,
|
2014-05-26 20:34:44 +01:00
|
|
|
sal_uInt32 nUniqueId);
|
|
|
|
void CreateScreenTextTexture(const boost::shared_array<sal_uInt8> &bitmapBuf,
|
2014-05-29 02:00:24 +02:00
|
|
|
::Size maSizePixels, const glm::vec2& vTopLeft,
|
|
|
|
const glm::vec2& vBottomRight, sal_uInt32 nUniqueId);
|
2014-05-28 19:11:47 +02:00
|
|
|
void ProcessUnrenderedShape(bool bNewScene);
|
2014-05-15 10:55:02 +02:00
|
|
|
|
|
|
|
void SetPickingMode(bool bPickingMode);
|
2014-05-21 01:49:59 +02:00
|
|
|
|
|
|
|
sal_uInt32 GetPixelColorFromPoint(long nX, long nY);
|
2014-05-28 18:51:38 +02:00
|
|
|
|
|
|
|
void ReleaseShapes();
|
|
|
|
void ReleaseScreenTextShapes();
|
2014-04-29 01:32:40 +02:00
|
|
|
private:
|
2014-05-29 02:00:24 +02:00
|
|
|
void MoveModelf( const PosVecf3& trans, const PosVecf3& angle, const PosVecf3& scale);
|
2014-04-29 02:10:20 +02:00
|
|
|
|
2014-05-27 21:58:31 +01:00
|
|
|
void ClearBuffer();
|
2014-04-29 17:44:16 +08:00
|
|
|
void RenderPolygon3DObject();
|
2014-05-29 02:00:24 +02:00
|
|
|
void RenderLine3D(const Polygon3DInfo &polygon);
|
|
|
|
void RenderPolygon3D(const Polygon3DInfo &polygon);
|
2014-04-29 17:44:16 +08:00
|
|
|
void Init3DUniformBlock();
|
|
|
|
void Update3DUniformBlock();
|
|
|
|
void RenderExtrude3DObject();
|
2014-05-05 18:12:03 +08:00
|
|
|
//add for text
|
|
|
|
void RenderTextShape();
|
2014-05-26 00:27:22 +02:00
|
|
|
void RenderScreenTextShape();
|
2014-04-29 17:44:16 +08:00
|
|
|
void RenderExtrudeSurface(const Extrude3DInfo& extrude3D);
|
|
|
|
void RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D);
|
|
|
|
void RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D);
|
|
|
|
void RenderExtrudeBottomSurface(const Extrude3DInfo& extrude3D);
|
|
|
|
void RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D, int surIndex);
|
|
|
|
void AddVertexData(GLuint vertexBuf);
|
|
|
|
void AddNormalData(GLuint normalBuf);
|
|
|
|
void AddIndexData(GLuint indexBuf);
|
2014-05-12 02:57:51 +02:00
|
|
|
void RenderNonRoundedBar(const Extrude3DInfo& extrude3D);
|
2014-04-29 01:32:40 +02:00
|
|
|
bool GetSimilarVertexIndex(PackedVertex & packed,
|
|
|
|
std::map<PackedVertex,unsigned short> & VertexToOutIndex,
|
|
|
|
unsigned short & result
|
|
|
|
);
|
|
|
|
void SetVertex(PackedVertex &packed,
|
|
|
|
std::map<PackedVertex,unsigned short> &VertexToOutIndex,
|
2014-04-29 02:10:20 +02:00
|
|
|
std::vector<glm::vec3> &vertex,
|
|
|
|
std::vector<glm::vec3> &normal,
|
|
|
|
std::vector<unsigned short> &indeices);
|
2014-04-29 01:32:40 +02:00
|
|
|
void CreateActualRoundedCube(float fRadius, int iSubDivY, int iSubDivZ, float width, float height, float depth);
|
2014-04-29 02:10:20 +02:00
|
|
|
int GenerateRoundCornerBar(std::vector<glm::vec3> &vertices, std::vector<glm::vec3> &normals, float fRadius, int iSubDivY,
|
2014-04-29 01:32:40 +02:00
|
|
|
int iSubDivZ, float width, float height, float depth);
|
2014-04-29 17:44:16 +08:00
|
|
|
void CreateSceneBoxView();
|
2014-05-25 15:19:47 +08:00
|
|
|
|
|
|
|
void ReleasePolygonShapes();
|
|
|
|
void ReleaseExtrude3DShapes();
|
|
|
|
void ReleaseTextShapes();
|
2014-05-28 12:50:38 +08:00
|
|
|
void ReleaseBatchBarInfo();
|
2014-05-28 13:06:07 +08:00
|
|
|
void GetBatchBarsInfo();
|
2014-05-29 02:00:24 +02:00
|
|
|
void GetBatchTopAndFlatInfo(const Extrude3DInfo &extrude3D);
|
|
|
|
void GetBatchMiddleInfo(const Extrude3DInfo &extrude3D);
|
2014-05-28 12:50:38 +08:00
|
|
|
void InitBatch3DUniformBlock();
|
|
|
|
void UpdateBatch3DUniformBlock();
|
2014-05-28 19:11:47 +02:00
|
|
|
void RenderBatchBars(bool bNewScene);
|
2014-04-29 01:32:40 +02:00
|
|
|
private:
|
2014-05-15 10:55:02 +02:00
|
|
|
|
|
|
|
struct ShaderResources
|
|
|
|
{
|
|
|
|
// 3DProID
|
|
|
|
GLint m_3DProID;
|
2014-05-15 10:55:36 +02:00
|
|
|
GLint m_3DProjectionID;
|
|
|
|
GLint m_3DViewID;
|
|
|
|
GLint m_3DModelID;
|
|
|
|
GLint m_3DNormalMatrixID;
|
|
|
|
GLint m_3DVertexID;
|
|
|
|
GLint m_3DNormalID;
|
2014-05-15 10:55:02 +02:00
|
|
|
|
|
|
|
// TextProID
|
|
|
|
GLint m_TextProID;
|
|
|
|
GLint m_TextMatrixID;
|
|
|
|
GLint m_TextVertexID;
|
|
|
|
GLint m_TextTexCoordID;
|
|
|
|
GLint m_TextTexID;
|
|
|
|
|
2014-05-26 00:27:22 +02:00
|
|
|
// ScreenTextProID
|
|
|
|
GLint m_ScreenTextProID;
|
|
|
|
GLint m_ScreenTextVertexID;
|
|
|
|
GLint m_ScreenTextTexCoordID;
|
|
|
|
GLint m_ScreenTextTexID;
|
|
|
|
|
2014-05-15 10:55:02 +02:00
|
|
|
// CommonProID
|
|
|
|
GLint m_CommonProID;
|
|
|
|
GLint m_2DVertexID;
|
|
|
|
GLint m_2DColorID;
|
|
|
|
GLint m_MatrixID;
|
|
|
|
|
2014-05-28 12:43:43 +08:00
|
|
|
// Batch render
|
|
|
|
GLint m_3DBatchProID;
|
|
|
|
GLint m_3DBatchProjectionID;
|
|
|
|
GLint m_3DBatchViewID;
|
|
|
|
GLint m_3DBatchModelID;
|
|
|
|
GLint m_3DBatchNormalMatrixID;
|
|
|
|
GLint m_3DBatchVertexID;
|
|
|
|
GLint m_3DBatchNormalID;
|
|
|
|
GLint m_3DBatchColorID;
|
|
|
|
|
2014-05-26 00:31:53 +02:00
|
|
|
ShaderResources();
|
|
|
|
~ShaderResources();
|
2014-05-15 10:55:02 +02:00
|
|
|
|
|
|
|
void LoadShaders();
|
|
|
|
};
|
|
|
|
|
2014-05-15 11:22:02 +02:00
|
|
|
struct PickingShaderResources
|
|
|
|
{
|
|
|
|
// CommonProID
|
|
|
|
GLint m_CommonProID;
|
|
|
|
GLint m_2DVertexID;
|
|
|
|
GLint m_2DColorID;
|
|
|
|
GLint m_MatrixID;
|
|
|
|
|
2014-05-26 00:31:53 +02:00
|
|
|
PickingShaderResources();
|
|
|
|
~PickingShaderResources();
|
2014-05-15 11:22:02 +02:00
|
|
|
|
|
|
|
void LoadShaders();
|
|
|
|
};
|
|
|
|
|
2014-05-15 11:07:36 +02:00
|
|
|
ShaderResources maResources;
|
2014-05-15 11:22:02 +02:00
|
|
|
PickingShaderResources maPickingResources;
|
2014-05-15 10:55:02 +02:00
|
|
|
|
2014-04-29 02:10:20 +02:00
|
|
|
// Model matrix : an identity matrix (model will be at the origin
|
|
|
|
glm::mat4 m_Model;
|
|
|
|
|
2014-05-07 15:47:17 +02:00
|
|
|
sal_Int32 m_iWidth;
|
2014-04-29 02:10:20 +02:00
|
|
|
|
2014-05-07 15:47:17 +02:00
|
|
|
sal_Int32 m_iHeight;
|
2014-04-29 02:10:20 +02:00
|
|
|
|
2014-05-10 04:29:20 +02:00
|
|
|
GlobalLights m_LightsInfo;
|
2014-04-29 01:32:40 +02:00
|
|
|
|
|
|
|
CameraInfo m_CameraInfo;
|
|
|
|
|
|
|
|
Polygon3DInfo m_Polygon3DInfo;
|
|
|
|
|
2014-05-25 15:19:47 +08:00
|
|
|
std::vector <Polygon3DInfo> m_Polygon3DInfoList;
|
2014-04-29 01:32:40 +02:00
|
|
|
|
|
|
|
glm::mat4 m_3DProjection;
|
|
|
|
|
|
|
|
glm::mat4 m_3DView;
|
|
|
|
|
|
|
|
glm::mat4 m_3DMVP;
|
|
|
|
|
|
|
|
GLuint m_3DUBOBuffer;
|
2014-04-29 12:46:38 +03:00
|
|
|
#if 0
|
2014-04-29 01:32:40 +02:00
|
|
|
GLint m_3DLightBlockIndex;
|
|
|
|
|
|
|
|
GLint m_3DMaterialBlockIndex;
|
2014-04-29 12:46:38 +03:00
|
|
|
#endif
|
2014-04-29 01:32:40 +02:00
|
|
|
GLint m_3DActualSizeLight;
|
|
|
|
|
|
|
|
GLuint m_NormalBuffer;
|
|
|
|
|
2014-04-29 02:10:20 +02:00
|
|
|
GLuint m_VertexBuffer;
|
|
|
|
|
2014-04-29 01:32:40 +02:00
|
|
|
Extrude3DInfo m_Extrude3DInfo;
|
|
|
|
|
|
|
|
std::vector <Extrude3DInfo> m_Extrude3DList;
|
|
|
|
|
|
|
|
GLuint m_CubeVertexBuf;
|
|
|
|
|
|
|
|
GLuint m_CubeElementBuf;
|
|
|
|
|
|
|
|
GLuint m_CubeNormalBuf;
|
|
|
|
|
|
|
|
GLuint m_BoundBox;
|
2014-05-06 09:43:08 +08:00
|
|
|
GLuint m_BoundBoxNormal;
|
2014-05-05 18:12:03 +08:00
|
|
|
// add for text
|
2014-05-25 15:19:47 +08:00
|
|
|
std::vector <TextInfo> m_TextInfoList;
|
2014-05-26 00:27:22 +02:00
|
|
|
std::vector <TextInfo> m_ScreenTextInfoList;
|
2014-05-05 18:12:03 +08:00
|
|
|
GLuint m_TextTexCoordBuf;
|
|
|
|
|
2014-04-29 01:32:40 +02:00
|
|
|
std::vector<glm::vec3> m_Vertices;
|
|
|
|
|
|
|
|
std::vector<glm::vec3> m_Normals;
|
|
|
|
|
2014-05-23 17:27:35 +02:00
|
|
|
std::vector<unsigned short> m_Indices;
|
2014-04-29 01:32:40 +02:00
|
|
|
|
|
|
|
RoundBarMesh m_RoundBarMesh;
|
|
|
|
|
2014-05-07 15:10:42 +08:00
|
|
|
GLuint m_RenderVertexBuf;
|
|
|
|
|
|
|
|
GLuint m_RenderTexCoordBuf;
|
|
|
|
|
2014-04-29 17:44:16 +08:00
|
|
|
float m_fViewAngle;
|
|
|
|
|
|
|
|
float m_fHeightWeight;
|
2014-05-15 10:55:02 +02:00
|
|
|
|
|
|
|
bool mbPickingMode;
|
2014-05-21 01:49:59 +02:00
|
|
|
|
|
|
|
GLuint mnPickingFbo;
|
2014-05-21 14:23:07 +02:00
|
|
|
GLuint mnPickingRboDepth;
|
|
|
|
GLuint mnPickingRboColor;
|
2014-05-28 12:43:43 +08:00
|
|
|
|
|
|
|
BatchBarInfo m_BarSurface[3];
|
|
|
|
GLuint m_BatchModelMatrixBuf;
|
|
|
|
GLuint m_BatchNormalMatrixBuf;
|
|
|
|
GLuint m_BatchColorBuf;
|
|
|
|
MaterialParameters m_Batchmaterial;
|
|
|
|
GLuint m_Batch3DUBOBuffer;
|
|
|
|
GLint m_Batch3DActualSizeLight;
|
2014-04-29 01:32:40 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|