本文整理汇总了C++中btTransform::getOpenGLMatrix方法的典型用法代码示例。如果您正苦于以下问题:C++ btTransform::getOpenGLMatrix方法的具体用法?C++ btTransform::getOpenGLMatrix怎么用?C++ btTransform::getOpenGLMatrix使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类btTransform
的用法示例。
在下文中一共展示了btTransform::getOpenGLMatrix方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fromBulletTransform
Matrix44f fromBulletTransform( const btTransform &matrix )
{
btTransform trans;
Matrix44f m;
matrix.getOpenGLMatrix( m.m );
return m;
}
示例2: draw
void BeGraphicsModel::draw( unsigned int current_material, const btTransform& transform, const btVector3& scale )
{
// btScalar m[16];
transform.getOpenGLMatrix(m_matrix);
// m_system->matrixPush(GL_MODELVIEW);
glPushMatrix();
// m_system->matrixMult(GL_MODELVIEW, m_matrix);
m_system->matrixMult(m_matrix);
// m_system->matrixLoad(GL_MODELVIEW, m_matrix);
// m_system->matrixPush(GL_MODELVIEW);
// glPushMatrix();
if ( scale.x() != 1.0f || scale.y() != 1.0f || scale.z() != 1.0f )
m_system->matrixScale(GL_MODELVIEW, scale.x(), scale.y(), scale.z());
draw(current_material);
// glPopMatrix();
// m_system->matrixPop(GL_MODELVIEW);
// m_system->matrixPop(GL_MODELVIEW);
glPopMatrix();
//glEnable(GL_CULL_FACE);
//glCullFace(GL_BACK);
}
示例3:
Matrix44 toMatrix44(const btTransform& original)
{
Matrix44 matrix;
original.getOpenGLMatrix(matrix.getData());
return matrix;
}
示例4: draw
static void draw(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
float xpos = box1->getCenterOfMassPosition().getX();
float ypos = box1->getCenterOfMassPosition().getY();
float zpos = box1->getCenterOfMassPosition().getZ();
printf("%f %f %f\n",xpos,ypos,zpos);
btTransform trans = box1->getWorldTransform();
trans.setOrigin(btVector3(BoxVel[0], BoxVel[1], BoxVel[2]));
box1->setWorldTransform(trans);
box1->getMotionState()->getWorldTransform(trans);
trans.setOrigin(btVector3(BoxVel[0], BoxVel[1], BoxVel[2]));
box1->getMotionState()->setWorldTransform(trans);
//*** draw box1
glColor3f(0.0, 0.0, 1.0);
glPushMatrix();
box1->getMotionState()->getWorldTransform(trans);
trans.getOpenGLMatrix(matrix);
glMultMatrixf(matrix);
glutSolidCube(40);
glPopMatrix();
//*** draw box2
glColor3f(1.0, 1.0, 0.0);
glPushMatrix();
box2->getMotionState()->getWorldTransform(trans);
trans.getOpenGLMatrix(matrix);
glMultMatrixf(matrix);
glutSolidCube(10);
glPopMatrix();
// draw box 3
glColor3f(0.0,0.0,1.0);
glPushMatrix();
box3->getMotionState()->getWorldTransform(trans);
trans.getOpenGLMatrix(matrix);
glMultMatrixf(matrix);
glutSolidCube(30);
glPopMatrix();
glutSwapBuffers();
}
示例5:
glm::mat4 toMat4(const btTransform& t)
{
glm::mat4 ATTRIBUTE_ALIGNED16(glm_mat);
t.getOpenGLMatrix(glm::value_ptr(glm_mat));
return glm_mat;
}
示例6: m
// Convert a btTransform to an OSG Matrix
osg::Matrix
osgbCollision::asOsgMatrix( const btTransform& t )
{
btScalar ogl[ 16 ];
t.getOpenGLMatrix( ogl );
osg::Matrix m( ogl );
return m;
}
示例7: drawAngularLimit
void ShapeDrawer::drawAngularLimit(const btTransform& space, const btVector3& angularLower, const btVector3& angularUpper)
{
glPushMatrix();
btScalar m[16];
m[0] = 1.0; m[1] = m[2] = m[3] = 0.0;
m[4] = 0.0; m[5] = 1.0; m[6] = m[7] = 0.0;
m[8] = m[9] = 0.0; m[10] = 1.0; m[11] = 0.0;
m[12] = m[13] = m[14] = 0.0; m[15] = 1.0;
space.getOpenGLMatrix(m);
glMultMatrixf((const GLfloat*)m);
float x, y, z;
glBegin( GL_LINES );
if(angularLower.getX() < angularUpper.getX()) {
glColor3f(1.f, 0.f, 0.f);
glVertex3f(0.f, 0.f, 0.f);
y = sin((float)angularLower.getX());
z = cos((float)angularLower.getX());
glVertex3f(0.f, y, z);
glVertex3f(0.f, 0.f, 0.f);
y = sin((float)angularUpper.getX());
z = cos((float)angularUpper.getX());
glVertex3f(0.f, y, z);
}
if(angularLower.getY() < angularUpper.getY()) {
glColor3f(0.f, 1.f, 0.f);
glVertex3f(0.f, 0.f, 0.f);
x = cos((float)angularLower.getY());
z = sin((float)angularLower.getY());
glVertex3f(x, 0.f, z);
glVertex3f(0.f, 0.f, 0.f);
x = cos((float)angularUpper.getY());
z = sin((float)angularUpper.getY());
glVertex3f(x, 0.f, z);
}
if(angularLower.getZ() < angularUpper.getZ()) {
glColor3f(0.f, 0.f, 1.f);
glVertex3f(0.f, 0.f, 0.f);
x = cos((float)angularLower.getZ());
y = sin((float)angularLower.getZ());
glVertex3f(x, y, 0.f);
glVertex3f(0.f, 0.f, 0.f);
x = cos((float)angularUpper.getZ());
y = sin((float)angularUpper.getZ());
glVertex3f(x, y, 0.f);
}
glEnd();
glPopMatrix();
}
示例8: glDraw
void glDraw() {
if (!model) return;
body1->getMotionState()->getWorldTransform(t);
t.getOpenGLMatrix(m);
glPushMatrix();
glMultMatrixf(m);
model->glDraw();
glPopMatrix();
}
示例9: btTransform_to_XMMATRIX
XMMATRIX GameApp::btTransform_to_XMMATRIX(btTransform const & trans)
{
XMMATRIX transform = XMMatrixIdentity();
XMFLOAT4X4 data;
trans.getOpenGLMatrix((float*)&data);
transform = (XMLoadFloat4x4(&data));
return transform;
}
示例10: drawCube
void drawCube (const btTransform& T)
{
ATTRIBUTE_ALIGNED16(btScalar) m[16];
T.getOpenGLMatrix (&m[0]);
glPushMatrix ();
#ifdef BT_USE_DOUBLE_PRECISION
glMultMatrixd (&m[0]);
glScaled (2.0 * boxShapeHalfExtents[0], 2.0 * boxShapeHalfExtents[1], 2.0 * boxShapeHalfExtents[2]);
#else
glMultMatrixf (&m[0]);
glScalef (2.0 * boxShapeHalfExtents[0], 2.0 * boxShapeHalfExtents[1], 2.0 * boxShapeHalfExtents[2]);
#endif //BT_USE_DOUBLE_PRECISION
#ifdef __QNX__
glBegin( GL_QUADS );
glNormal3f( 1.0, 0.0, 0.0);
glVertex3f(+0.5,-0.5,+0.5);
glVertex3f(+0.5,-0.5,-0.5);
glVertex3f(+0.5,+0.5,-0.5);
glVertex3f(+0.5,+0.5,+0.5);
glNormal3f( 0.0, 1.0, 0.0);
glVertex3f(+0.5,+0.5,+0.5);
glVertex3f(+0.5,+0.5,-0.5);
glVertex3f(-0.5,+0.5,-0.5);
glVertex3f(-0.5,+0.5,+0.5);
glNormal3f( 0.0, 0.0, 1.0);
glVertex3f(+0.5,+0.5,+0.5);
glVertex3f(-0.5,+0.5,+0.5);
glVertex3f(-0.5,-0.5,+0.5);
glVertex3f(+0.5,-0.5,+0.5);
glNormal3f(-1.0, 0.0, 0.0);
glVertex3f(-0.5,-0.5,+0.5);
glVertex3f(-0.5,+0.5,+0.5);
glVertex3f(-0.5,+0.5,-0.5);
glVertex3f(-0.5,-0.5,-0.5);
glNormal3f( 0.0,-1.0, 0.0);
glVertex3f(-0.5,-0.5,+0.5);
glVertex3f(-0.5,-0.5,-0.5);
glVertex3f(+0.5,-0.5,-0.5);
glVertex3f(+0.5,-0.5,+0.5);
glNormal3f( 0.0, 0.0,-1.0);
glVertex3f(-0.5,-0.5,-0.5);
glVertex3f(-0.5,+0.5,-0.5);
glVertex3f(+0.5,+0.5,-0.5);
glVertex3f(+0.5,-0.5,-0.5);
glEnd();
#else
glutSolidCube (1.0);
#endif
glPopMatrix ();
}
示例11: btTransform_to_Matrix4
void btTransform_to_Matrix4(JNIEnv * const &jenv, jobject &target, const btTransform &source)
{
matrix4_ensurefields(jenv, target);
jfloatArray valArray = (jfloatArray) jenv->GetObjectField(target, matrix4_val);
jfloat * elements = jenv->GetFloatArrayElements(valArray, NULL);
source.getOpenGLMatrix(elements);
jenv->ReleaseFloatArrayElements(valArray, elements, 0);
jenv->DeleteLocalRef(valArray);
}
示例12:
void CGmObjPhysMan::CMotionState::setWorldTransform( const btTransform &roWorldTransform )
{
btDefaultMotionState::setWorldTransform( roWorldTransform );
if( m_poShape )
{
//const btMatrix3x3 &roBasis = roWorldTransform.getBasis();
//m_poShape->m_oMatrix.Unit();
roWorldTransform.getOpenGLMatrix( m_poShape->m_oMatrix );
//m_poShape->m_oMatrix.Translate( BT2TVEC3( roWorldTransform.getOrigin() ) );
}
}
示例13: Render
void MyConvex::Render(bool only_wireframe, const btVector3& wire_color) const
{
const float Scale = 1.0f;
glPushMatrix();
btScalar glmat[16]; //4x4 column major matrix for OpenGL.
mTransform.getOpenGLMatrix(glmat);
#ifndef BT_USE_DOUBLE_PRECISION
glMultMatrixf(&(glmat[0]));
#else
glMultMatrixd(&(glmat[0]));
#endif
if(!only_wireframe)
{
btVector3 color(0.0f, 0.5f, 1.0f);
for(int i=0;i<mNbPolys;i++)
{
glNormal3f(mPolys[i].mPlane[0], mPolys[i].mPlane[1], mPolys[i].mPlane[2]);
int NbTris = mPolys[i].mNbVerts-2;
const btVector3& p0 = mVerts[mPolys[i].mIndices[0]]*Scale;
for(int j=1;j<=NbTris;j++)
{
int k = (j+1)%mPolys[i].mNbVerts;
const btVector3& p1 = mVerts[mPolys[i].mIndices[j]]*Scale;
const btVector3& p2 = mVerts[mPolys[i].mIndices[k]]*Scale;
DrawTriangle(p0, p1, p2, color);
}
}
}
{
btVector3 color;
if(only_wireframe)
color = wire_color;
else
color = btVector3(0.0f, 0.0f, 0.0f);
for(int i=0;i<mNbPolys;i++)
{
for(int j=0;j<mPolys[i].mNbVerts;j++)
{
int k = (j+1)%mPolys[i].mNbVerts;
DrawLine(mVerts[mPolys[i].mIndices[j]]*Scale, mVerts[mPolys[i].mIndices[k]]*Scale, color, 1.0f);
}
}
}
glPopMatrix();
}
示例14: setWorldTransform
void motion_state::setWorldTransform(const btTransform &worldTrans)
{
if (node == NULL) {
return;
}
float f[16];
worldTrans.getOpenGLMatrix(f);
node->transformation_matrix = glm::mat4( f[0], f[1], f[2], f[3],
f[4], f[5], f[6], f[7],
f[8], f[9], f[10], f[11],
f[12], f[13], f[14], f[15] );
}
示例15: fromBTTransform
OSG::Matrix VRPhysics::fromBTTransform(const btTransform t) {
btScalar _m[16];
t.getOpenGLMatrix(_m);
OSG::Matrix m;
for (int i=0;i<4;i++) m[0][i] = _m[i];
for (int i=0;i<4;i++) m[1][i] = _m[4+i];
for (int i=0;i<4;i++) m[2][i] = _m[8+i];
for (int i=0;i<4;i++) m[3][i] = _m[12+i];
//cout << "fromTransform " << m << endl;
return m;
}