prepare for Bullet 2 demo collection
This commit is contained in:
110
Demos3/AllBullet2Demos/main.cpp
Normal file
110
Demos3/AllBullet2Demos/main.cpp
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
#include "../../btgui/OpenGLWindow/SimpleOpenGL3App.h"
|
||||||
|
#include "Bullet3Common/b3Vector3.h"
|
||||||
|
#include "assert.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "../GpuDemos/gwenUserInterface.h"
|
||||||
|
|
||||||
|
GwenUserInterface* gui = 0;
|
||||||
|
|
||||||
|
static void MyMouseMoveCallback( float x, float y)
|
||||||
|
{
|
||||||
|
bool handled = false;
|
||||||
|
if (gui)
|
||||||
|
handled = gui->mouseMoveCallback(x,y);
|
||||||
|
if (!handled)
|
||||||
|
b3DefaultMouseMoveCallback(x,y);
|
||||||
|
}
|
||||||
|
static void MyMouseButtonCallback(int button, int state, float x, float y)
|
||||||
|
{
|
||||||
|
bool handled = false;
|
||||||
|
//try picking first
|
||||||
|
if (gui)
|
||||||
|
handled = gui->mouseButtonCallback(button,state,x,y);
|
||||||
|
|
||||||
|
if (!handled)
|
||||||
|
b3DefaultMouseButtonCallback(button,state,x,y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MyComboBoxCallback(int comboId, const char* item)
|
||||||
|
{
|
||||||
|
printf("comboId = %d, item = %s\n",comboId, item);
|
||||||
|
/*int numDemos = demoNames.size();
|
||||||
|
for (int i=0;i<numDemos;i++)
|
||||||
|
{
|
||||||
|
if (!strcmp(demoNames[i],item))
|
||||||
|
{
|
||||||
|
if (selectedDemo != i)
|
||||||
|
{
|
||||||
|
gReset = true;
|
||||||
|
selectedDemo = i;
|
||||||
|
printf("selected demo %s!\n", item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
|
||||||
|
float dt = 1./120.f;
|
||||||
|
int width = 1024;
|
||||||
|
int height=768;
|
||||||
|
|
||||||
|
SimpleOpenGL3App* app = new SimpleOpenGL3App("AllBullet2Demos",width,height);
|
||||||
|
app->m_instancingRenderer->setCameraDistance(13);
|
||||||
|
app->m_instancingRenderer->setCameraPitch(0);
|
||||||
|
app->m_instancingRenderer->setCameraTargetPosition(b3MakeVector3(0,0,0));
|
||||||
|
app->m_window->setMouseMoveCallback(MyMouseMoveCallback);
|
||||||
|
app->m_window->setMouseButtonCallback(MyMouseButtonCallback);
|
||||||
|
|
||||||
|
|
||||||
|
GLint err = glGetError();
|
||||||
|
assert(err==GL_NO_ERROR);
|
||||||
|
|
||||||
|
sth_stash* fontstash=0;
|
||||||
|
gui = new GwenUserInterface;
|
||||||
|
gui->init(width,height,fontstash,app->m_window->getRetinaScale());
|
||||||
|
|
||||||
|
const char* names[] = {"test1", "test2","test3"};
|
||||||
|
gui->registerComboBox(13,3,&names[0],1);
|
||||||
|
const char* names2[] = {"comboF", "comboG","comboH"};
|
||||||
|
gui->registerComboBox(2,3,&names2[0],1);
|
||||||
|
|
||||||
|
gui->setComboBoxCallback(MyComboBoxCallback);
|
||||||
|
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
|
||||||
|
GLint err = glGetError();
|
||||||
|
assert(err==GL_NO_ERROR);
|
||||||
|
app->m_instancingRenderer->init();
|
||||||
|
app->m_instancingRenderer->updateCamera();
|
||||||
|
|
||||||
|
app->drawGrid();
|
||||||
|
char bla[1024];
|
||||||
|
static int frameCount = 0;
|
||||||
|
frameCount++;
|
||||||
|
sprintf(bla,"Simple test frame %d", frameCount);
|
||||||
|
|
||||||
|
app->drawText(bla,10,10);
|
||||||
|
|
||||||
|
static int toggle = 1;
|
||||||
|
if (1)
|
||||||
|
{
|
||||||
|
gui->draw(app->m_instancingRenderer->getScreenWidth(),app->m_instancingRenderer->getScreenHeight());
|
||||||
|
}
|
||||||
|
toggle=1-toggle;
|
||||||
|
app->swapBuffer();
|
||||||
|
} while (!app->m_window->requestedExit());
|
||||||
|
|
||||||
|
delete gui;
|
||||||
|
|
||||||
|
delete app;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
33
Demos3/AllBullet2Demos/premake4.lua
Normal file
33
Demos3/AllBullet2Demos/premake4.lua
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
project "App_AllBullet2Demos"
|
||||||
|
|
||||||
|
language "C++"
|
||||||
|
|
||||||
|
kind "ConsoleApp"
|
||||||
|
targetdir "../../bin"
|
||||||
|
|
||||||
|
includedirs {
|
||||||
|
".",
|
||||||
|
"../../src",
|
||||||
|
"../../btgui"
|
||||||
|
}
|
||||||
|
|
||||||
|
initOpenGL()
|
||||||
|
initGlew()
|
||||||
|
|
||||||
|
links{"gwen", "OpenGL_Window","OpenGL_TrueTypeFont","BulletSoftBody","BulletDynamics","BulletCollision","LinearMath"}
|
||||||
|
|
||||||
|
files {
|
||||||
|
"**.cpp",
|
||||||
|
"**.h",
|
||||||
|
"../../src/Bullet3Common/**.cpp",
|
||||||
|
"../../src/Bullet3Common/**.h",
|
||||||
|
"../../btgui/Timing/b3Clock.cpp",
|
||||||
|
"../../btgui/Timing/b3Clock.h",
|
||||||
|
"../GpuDemos/gwenUserInterface.cpp",
|
||||||
|
"../GpuDemos/gwenUserInterface.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
if os.is("MacOSX") then
|
||||||
|
links{"Cocoa.framework"}
|
||||||
|
end
|
||||||
@@ -228,8 +228,8 @@ void GwenUserInterface::init(int width, int height,struct sth_stash* stash,float
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Gwen::UnicodeString str2(L"OpenCL");
|
// Gwen::UnicodeString str2(L"OpenCL");
|
||||||
tab->AddPage(str2);
|
// tab->AddPage(str2);
|
||||||
//Gwen::UnicodeString str3(L"page3");
|
//Gwen::UnicodeString str3(L"page3");
|
||||||
// tab->AddPage(str3);
|
// tab->AddPage(str3);
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ void GwenUserInterface::setComboBoxCallback(b3ComboBoxCallback callback)
|
|||||||
m_data->m_comboBoxCallback = callback;
|
m_data->m_comboBoxCallback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GwenUserInterface::registerComboBox(int comboboxId, int numItems, const char** items)
|
void GwenUserInterface::registerComboBox(int comboboxId, int numItems, const char** items, int startItem)
|
||||||
{
|
{
|
||||||
Gwen::Controls::ComboBox* combobox = new Gwen::Controls::ComboBox(m_data->m_demoPage->GetPage());
|
Gwen::Controls::ComboBox* combobox = new Gwen::Controls::ComboBox(m_data->m_demoPage->GetPage());
|
||||||
MyComboBoxHander* handler = new MyComboBoxHander(m_data, comboboxId);
|
MyComboBoxHander* handler = new MyComboBoxHander(m_data, comboboxId);
|
||||||
@@ -303,8 +303,12 @@ void GwenUserInterface::registerComboBox(int comboboxId, int numItems, const cha
|
|||||||
combobox->SetWidth( 100 );
|
combobox->SetWidth( 100 );
|
||||||
//box->SetPos(120,130);
|
//box->SetPos(120,130);
|
||||||
for (int i=0;i<numItems;i++)
|
for (int i=0;i<numItems;i++)
|
||||||
combobox->AddItem(Gwen::Utility::StringToUnicode(items[i]));
|
{
|
||||||
|
Gwen::Controls::MenuItem* item = combobox->AddItem(Gwen::Utility::StringToUnicode(items[i]));
|
||||||
|
if (i==startItem)
|
||||||
|
combobox->OnItemSelected(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class GwenUserInterface
|
|||||||
void registerToggleButton(int buttonId, const char* name);
|
void registerToggleButton(int buttonId, const char* name);
|
||||||
|
|
||||||
void setComboBoxCallback(b3ComboBoxCallback callback);
|
void setComboBoxCallback(b3ComboBoxCallback callback);
|
||||||
void registerComboBox(int buttonId, int numItems, const char** items);
|
void registerComboBox(int buttonId, int numItems, const char** items, int startItem = 0);
|
||||||
|
|
||||||
void setStatusBarMessage(const char* message, bool isLeft=true);
|
void setStatusBarMessage(const char* message, bool isLeft=true);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ enum
|
|||||||
};
|
};
|
||||||
|
|
||||||
b3AlignedObjectArray<const char*> demoNames;
|
b3AlignedObjectArray<const char*> demoNames;
|
||||||
int selectedDemo = 0;
|
int selectedDemo = 1;
|
||||||
GpuDemo::CreateFunc* allDemos[]=
|
GpuDemo::CreateFunc* allDemos[]=
|
||||||
{
|
{
|
||||||
//ConcaveCompound2Scene::MyCreateFunc,
|
//ConcaveCompound2Scene::MyCreateFunc,
|
||||||
@@ -730,7 +730,7 @@ int main(int argc, char* argv[])
|
|||||||
delete demo;
|
delete demo;
|
||||||
}
|
}
|
||||||
|
|
||||||
gui->registerComboBox(MYCOMBOBOX1,numItems,&demoNames[0]);
|
gui->registerComboBox(MYCOMBOBOX1,numItems,&demoNames[0],selectedDemo);
|
||||||
gui->setComboBoxCallback(MyComboBoxCallback);
|
gui->setComboBoxCallback(MyComboBoxCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ int main(int argc, char* argv[])
|
|||||||
char bla[1024];
|
char bla[1024];
|
||||||
static int frameCount = 0;
|
static int frameCount = 0;
|
||||||
frameCount++;
|
frameCount++;
|
||||||
sprintf(bla,"Simple test frame %d\n", frameCount);
|
sprintf(bla,"Simple test frame %d", frameCount);
|
||||||
|
|
||||||
app->drawText(bla,10,10);
|
app->drawText(bla,10,10);
|
||||||
app->swapBuffer();
|
app->swapBuffer();
|
||||||
|
|||||||
@@ -145,6 +145,8 @@ public:
|
|||||||
}
|
}
|
||||||
virtual void End()
|
virtual void End()
|
||||||
{
|
{
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void StartClip()
|
virtual void StartClip()
|
||||||
|
|||||||
@@ -18,13 +18,20 @@
|
|||||||
#include "OpenGLWindow/GLInstancingRenderer.h"
|
#include "OpenGLWindow/GLInstancingRenderer.h"
|
||||||
|
|
||||||
#include "Bullet3Common/b3Vector3.h"
|
#include "Bullet3Common/b3Vector3.h"
|
||||||
|
#include "Bullet3Common/b3Logging.h"
|
||||||
|
|
||||||
#include "../btgui/OpenGLTrueTypeFont/fontstash.h"
|
#include "../btgui/OpenGLTrueTypeFont/fontstash.h"
|
||||||
#include "../btgui/OpenGLWindow/TwFonts.h"
|
#include "../btgui/OpenGLWindow/TwFonts.h"
|
||||||
|
#include "OpenGLTrueTypeFont/opengl_fontstashcallbacks.h"
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
struct SimpleInternalData
|
struct SimpleInternalData
|
||||||
{
|
{
|
||||||
GLuint m_fontTextureId;
|
GLuint m_fontTextureId;
|
||||||
|
struct sth_stash* m_fontStash;
|
||||||
|
OpenGL2RenderCallbacks* m_renderCallbacks;
|
||||||
|
int m_droidRegular;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static SimpleOpenGL3App* gApp=0;
|
static SimpleOpenGL3App* gApp=0;
|
||||||
@@ -57,6 +64,7 @@ static GLuint BindFont(const CTexFont *_Font)
|
|||||||
return TexID;
|
return TexID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern char OpenSansData[];
|
||||||
|
|
||||||
SimpleOpenGL3App::SimpleOpenGL3App( const char* title, int width,int height)
|
SimpleOpenGL3App::SimpleOpenGL3App( const char* title, int width,int height)
|
||||||
{
|
{
|
||||||
@@ -91,9 +99,43 @@ SimpleOpenGL3App::SimpleOpenGL3App( const char* title, int width,int height)
|
|||||||
|
|
||||||
TwGenerateDefaultFonts();
|
TwGenerateDefaultFonts();
|
||||||
m_data->m_fontTextureId = BindFont(g_DefaultNormalFont);
|
m_data->m_fontTextureId = BindFont(g_DefaultNormalFont);
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
GLint err;
|
||||||
|
|
||||||
|
int datasize;
|
||||||
|
|
||||||
|
float sx,sy,dx,dy,lh;
|
||||||
|
GLuint texture;
|
||||||
|
m_data->m_renderCallbacks = new OpenGL2RenderCallbacks(m_primRenderer);
|
||||||
|
m_data->m_fontStash = sth_create(512,512,m_data->m_renderCallbacks);//256,256);//,1024);//512,512);
|
||||||
|
err = glGetError();
|
||||||
|
assert(err==GL_NO_ERROR);
|
||||||
|
|
||||||
|
if (!m_data->m_fontStash)
|
||||||
|
{
|
||||||
|
b3Warning("Could not create stash");
|
||||||
|
//fprintf(stderr, "Could not create stash.\n");
|
||||||
|
}
|
||||||
|
int droidRegular=0;
|
||||||
|
|
||||||
|
char* data2 = OpenSansData;
|
||||||
|
unsigned char* data = (unsigned char*) data2;
|
||||||
|
if (!(m_data->m_droidRegular = sth_add_font_from_memory(m_data->m_fontStash, data)))
|
||||||
|
{
|
||||||
|
b3Warning("error!\n");
|
||||||
|
}
|
||||||
|
err = glGetError();
|
||||||
|
assert(err==GL_NO_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void SimpleOpenGL3App::drawText( const char* txt, int posX, int posY)
|
void SimpleOpenGL3App::drawText( const char* txt, int posX, int posY)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -102,32 +144,26 @@ void SimpleOpenGL3App::drawText( const char* txt, int posX, int posY)
|
|||||||
|
|
||||||
//
|
//
|
||||||
//printf("str = %s\n",unicodeText);
|
//printf("str = %s\n",unicodeText);
|
||||||
int xpos=0;
|
|
||||||
int ypos=0;
|
float dx=0;
|
||||||
float dx;
|
|
||||||
|
|
||||||
int measureOnly=0;
|
int measureOnly=0;
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
/*
|
|
||||||
if (m_useTrueTypeFont)
|
if (1)//m_useTrueTypeFont)
|
||||||
{
|
{
|
||||||
|
bool measureOnly = false;
|
||||||
|
|
||||||
float yoffset = 0.f;
|
float fontSize= 64;//512;//128;
|
||||||
if (m_retinaScale==2.0f)
|
sth_draw_text(m_data->m_fontStash,
|
||||||
{
|
m_data->m_droidRegular,fontSize,posX,posY,
|
||||||
yoffset = -12;
|
txt,&dx, this->m_instancingRenderer->getScreenWidth(),this->m_instancingRenderer->getScreenHeight(),measureOnly,m_window->getRetinaScale());
|
||||||
}
|
sth_end_draw(m_data->m_fontStash);
|
||||||
Translate(r);
|
sth_flush_draw(m_data->m_fontStash);
|
||||||
sth_draw_text(m_font,
|
|
||||||
1,m_fontScaling,
|
|
||||||
r.x,r.y+yoffset,
|
|
||||||
unicodeText,&dx, m_screenWidth,m_screenHeight,measureOnly,m_retinaScale);
|
|
||||||
|
|
||||||
} else
|
} else
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
//float width = 0.f;
|
//float width = 0.f;
|
||||||
int pos=0;
|
int pos=0;
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
|
|
||||||
language "C++"
|
language "C++"
|
||||||
|
|
||||||
|
include "../Demos3/AllBullet2Demos"
|
||||||
include "../Demos3/GpuDemos"
|
include "../Demos3/GpuDemos"
|
||||||
-- include "../Demos3/CpuDemos"
|
-- include "../Demos3/CpuDemos"
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ include "../Demos3/SimpleOpenGL3"
|
|||||||
include "../test/OpenCL/ParallelPrimitives"
|
include "../test/OpenCL/ParallelPrimitives"
|
||||||
include "../test/OpenCL/RadixSortBenchmark"
|
include "../test/OpenCL/RadixSortBenchmark"
|
||||||
|
|
||||||
|
include "../src/BulletSoftBody"
|
||||||
include "../src/BulletDynamics"
|
include "../src/BulletDynamics"
|
||||||
include "../src/BulletCollision"
|
include "../src/BulletCollision"
|
||||||
include "../src/LinearMath"
|
include "../src/LinearMath"
|
||||||
|
|||||||
Reference in New Issue
Block a user