summaryrefslogtreecommitdiff
path: root/libs/assimp/samples/SimpleAssimpViewX/ModelLoaderHelperClasses.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/assimp/samples/SimpleAssimpViewX/ModelLoaderHelperClasses.h')
-rw-r--r--libs/assimp/samples/SimpleAssimpViewX/ModelLoaderHelperClasses.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/libs/assimp/samples/SimpleAssimpViewX/ModelLoaderHelperClasses.h b/libs/assimp/samples/SimpleAssimpViewX/ModelLoaderHelperClasses.h
new file mode 100644
index 0000000..1803ad1
--- /dev/null
+++ b/libs/assimp/samples/SimpleAssimpViewX/ModelLoaderHelperClasses.h
@@ -0,0 +1,98 @@
+//
+// v002MeshHelper.h
+// v002 Model Importer
+//
+// Created by vade on 9/26/10.
+// Copyright 2010 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/OpenGL.h>
+#import "color4.h"
+#import "vector3.h"
+#import "vector2.h"
+#import "matrix4x4.h"
+
+/* workflow:
+
+ 1) create a new scene wrapper
+ 2) populate an array of of meshHelpers for each mesh in the original scene
+ 3) (eventually) create an animator instance
+ 4) scale the asset (needed?)
+ 5) create the asset data (GL resources, textures etc)
+ 5a) for each mesh create a material instance
+ 5b) create a static vertex buffer
+ 5c) create index buffer
+ 5d) populate the index buffer
+ 5e) (eventually) gather weights
+*/
+
+#define BUFFER_OFFSET(i) ((char *)NULL + (i))
+
+struct Vertex
+{
+ aiVector3D vPosition;
+ aiVector3D vNormal;
+
+ aiColor4D dColorDiffuse;
+ aiVector3D vTangent;
+ aiVector3D vBitangent;
+ aiVector3D vTextureUV;
+ aiVector3D vTextureUV2;
+ unsigned char mBoneIndices[4];
+ unsigned char mBoneWeights[4]; // last Weight not used, calculated inside the vertex shader
+};
+
+
+// Helper Class to store GPU related resources from a given aiMesh
+// Modeled after AssimpView asset helper
+@interface MeshHelper : NSObject
+{
+ // Display list ID, this one shots *all drawing* of the mesh. Only ever use this to draw. Booya.
+ GLuint displayList;
+
+ // VAO that encapsulates all VBO drawing state
+ GLuint vao;
+
+ // VBOs
+ GLuint vertexBuffer;
+ GLuint indexBuffer;
+ GLuint normalBuffer;
+ GLuint numIndices;
+
+ // texture
+ GLuint textureID;
+
+ // Material
+ aiColor4D diffuseColor;
+ aiColor4D specularColor;
+ aiColor4D ambientColor;
+ aiColor4D emissiveColor;
+
+ GLfloat opacity;
+ GLfloat shininess;
+ GLfloat specularStrength;
+
+ BOOL twoSided;
+}
+
+@property (readwrite, assign) GLuint vao;
+@property (readwrite, assign) GLuint displayList;
+
+@property (readwrite, assign) GLuint vertexBuffer;
+@property (readwrite, assign) GLuint indexBuffer;
+@property (readwrite, assign) GLuint normalBuffer;
+@property (readwrite, assign) GLuint numIndices;
+
+@property (readwrite, assign) GLuint textureID;
+
+@property (readwrite, assign) aiColor4D* diffuseColor;
+@property (readwrite, assign) aiColor4D* specularColor;
+@property (readwrite, assign) aiColor4D* ambientColor;
+@property (readwrite, assign) aiColor4D* emissiveColor;
+
+@property (readwrite, assign) GLfloat opacity;
+@property (readwrite, assign) GLfloat shininess;
+@property (readwrite, assign) GLfloat specularStrength;
+@property (readwrite, assign) BOOL twoSided;
+@end