From ec4292ad75fe75741c60f9f85bd1ac4bae088329 Mon Sep 17 00:00:00 2001 From: erwin coumans Date: Fri, 17 Jan 2014 22:19:12 -0800 Subject: [PATCH] add basic test texture --- Demos3/GpuDemos/GpuDemo.cpp | 13 +++-- Demos3/GpuDemos/GpuDemo.h | 8 +-- Demos3/GpuDemos/rigidbody/GpuConvexScene.cpp | 27 +++++++++- Demos3/GpuDemos/softbody/GpuSoftBodyDemo.cpp | 49 +------------------ Demos3/GpuDemos/softbody/GpuSoftBodyDemo.h | 3 +- btgui/OpenGLWindow/GLInstancingRenderer.cpp | 4 +- btgui/OpenGLWindow/ShapeData.h | 35 +++++++++++++ data/bullet_logo.png | Bin 3380 -> 3937 bytes data/cube.png | Bin 0 -> 6888 bytes 9 files changed, 80 insertions(+), 59 deletions(-) create mode 100644 data/cube.png diff --git a/Demos3/GpuDemos/GpuDemo.cpp b/Demos3/GpuDemos/GpuDemo.cpp index aaa6c86b1..e931f699e 100644 --- a/Demos3/GpuDemos/GpuDemo.cpp +++ b/Demos3/GpuDemos/GpuDemo.cpp @@ -4,9 +4,9 @@ #include "Bullet3OpenCL/Initialize/b3OpenCLUtils.h" #include "OpenGLWindow/ShapeData.h" #include "OpenGLWindow/GLInstancingRenderer.h" - +#include "OpenGLWindow/OpenGLInclude.h" bool gAllowCpuOpenCL = false; - +#include "stb_image/stb_image.h" GpuDemo::GpuDemo() :m_clData(0) { @@ -121,4 +121,11 @@ int GpuDemo::registerGraphicsSphereShape(const ConstructionInfo& ci, float radiu } } return graphicsShapeIndex; -} \ No newline at end of file +} + + +unsigned char* GpuDemo::loadImage(const char* fileName, int& width, int& height, int& n) +{ + unsigned char *data = stbi_load(fileName, &width, &height, &n, 0); + return data; +} diff --git a/Demos3/GpuDemos/GpuDemo.h b/Demos3/GpuDemos/GpuDemo.h index a1d053c2f..8970d639e 100644 --- a/Demos3/GpuDemos/GpuDemo.h +++ b/Demos3/GpuDemos/GpuDemo.h @@ -48,9 +48,9 @@ public: arraySizeZ(10), #else - arraySizeX(20), - arraySizeY(20), - arraySizeZ(20), + arraySizeX(30), + arraySizeY(30), + arraySizeZ(30), #endif m_useConcaveMesh(false), gapX(16.3), @@ -77,6 +77,8 @@ public: virtual void clientMoveAndDisplay()=0; + unsigned char* loadImage(const char* fileName, int& width, int& height, int& n); + int registerGraphicsSphereShape(const ConstructionInfo& ci, float radius, bool usePointSprites=true, int largeSphereThreshold=100, int mediumSphereThreshold=10); struct GpuDemoInternalData* getInternalData(); diff --git a/Demos3/GpuDemos/rigidbody/GpuConvexScene.cpp b/Demos3/GpuDemos/rigidbody/GpuConvexScene.cpp index 9c992d8df..95946a84a 100644 --- a/Demos3/GpuDemos/rigidbody/GpuConvexScene.cpp +++ b/Demos3/GpuDemos/rigidbody/GpuConvexScene.cpp @@ -89,15 +89,38 @@ int GpuBoxPlaneScene::createDynamicsObjects(const ConstructionInfo& ci) int strideInBytes = 9*sizeof(float); int numVertices = sizeof(cube_vertices)/strideInBytes; int numIndices = sizeof(cube_indices)/sizeof(int); - return createDynamicsObjects2(ci,cube_vertices,numVertices,cube_indices,numIndices); + return createDynamicsObjects2(ci,cube_vertices_textured,numVertices,cube_indices,numIndices); } int GpuConvexScene::createDynamicsObjects2(const ConstructionInfo& ci, const float* vertices, int numVertices, const int* indices, int numIndices) { int strideInBytes = 9*sizeof(float); + int textureIndex = -1; + { + int width,height,n; + + const char* filename = "data/cube.png"; + const unsigned char* image=0; + + const char* prefix[]={"./","../","../../","../../../","../../../../"}; + int numprefix = sizeof(prefix)/sizeof(const char*); + + for (int i=0;!image && iregisterTexture(image,width,height); + } + } - int shapeId = ci.m_instancingRenderer->registerShape(&vertices[0],numVertices,indices,numIndices); + int shapeId = ci.m_instancingRenderer->registerShape(&vertices[0],numVertices,indices,numIndices,B3_GL_TRIANGLES,textureIndex); int group=1; int mask=1; int index=0; diff --git a/Demos3/GpuDemos/softbody/GpuSoftBodyDemo.cpp b/Demos3/GpuDemos/softbody/GpuSoftBodyDemo.cpp index fb4208ef3..cd15924fc 100644 --- a/Demos3/GpuDemos/softbody/GpuSoftBodyDemo.cpp +++ b/Demos3/GpuDemos/softbody/GpuSoftBodyDemo.cpp @@ -14,7 +14,7 @@ #include "Bullet3Collision/NarrowPhaseCollision/b3Config.h" #include "GpuSoftBodyDemoInternalData.h" #include "Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h" -#include "stb_image/stb_image.h" + static b3KeyboardCallback oldCallback = 0; extern bool gReset; @@ -298,50 +298,6 @@ GpuSoftClothDemo::~GpuSoftClothDemo() } -unsigned char* GpuSoftClothDemo::loadImage(const char* fileName, int& width, int& height, int& n) -{ - unsigned char *data = stbi_load(fileName, &width, &height, &n, 0); - if (data) - { - GLubyte* image=new GLubyte[512*256*4]; - for(int y=0;y<256;++y) - { - const int t=y>>4; - GLubyte* pi=image+y*512*3; - for(int x=0;x<512;++x) - { - const int s=x>>5; - const GLubyte b=180; - GLubyte c=b+((s+t&1)&1)*(255-b); - pi[0]=pi[1]=pi[2]=c;pi+=3; - } - } - - { - - for (int i=0;iQK$!8;-MT+OL6&q!Uq=Rpjs4tz j5?O)#V-sUf3C>MX2nDhkOM?7@862M7NZXvs{D&I=?Kc?Y diff --git a/data/cube.png b/data/cube.png new file mode 100644 index 0000000000000000000000000000000000000000..8c244eca6405e36009a8cf885df2f6487315bbb2 GIT binary patch literal 6888 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 ZZg$RQK;>7N3*+AbFw{5Id!a+R{y$HZ@S6Yt literal 0 HcmV?d00001