本文整理汇总了C++中VertexDeclaration类的典型用法代码示例。如果您正苦于以下问题:C++ VertexDeclaration类的具体用法?C++ VertexDeclaration怎么用?C++ VertexDeclaration使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了VertexDeclaration类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: setSize
//-------------------------------------------------------------------------------//
void OverlayPanelElement::initialise(const String& texName, float width, float height, float left, float top)
{
mTexture = TextureMgr::getSingletonPtr()->getByName(texName);
setSize(width, height);
setPosition(left, top);
mIsVisible = true;
if(!mIsInitialised)
{
mRenderData.vertexData = TITAN_NEW VertexData();
VertexDeclaration* decl = mRenderData.vertexData->vertexDecl;
decl->addElement(0,0, VET_FLOAT3, VES_POSITION);
mRenderData.vertexData->vertexStart = 0;
mRenderData.vertexData->vertexCount = 4;
VertexBufferPtr vbuf = HardwareBufferMgr::getSingletonPtr()->createVertexBuffer(decl->getVertexSize(0), mRenderData.vertexData->vertexCount,
HardwareBuffer::HBU_STATIC_WRITE_ONLY, false);
mRenderData.vertexData->vertexBufferBinding->setBinding(0, vbuf);
mRenderData.useIndex = false;
mRenderData.operationType = OT_TRIANGLE_STRIP;
mIsInitialised = true;
}
notifyGeometryOld();
}
开发者ID:cty41,项目名称:Titan,代码行数:29,代码来源:TiOverlayPanelElement.cpp
示例2: setupVertexDeclaration
//-----------------------------------------------------------------------
void BillboardChain::setupVertexDeclaration(void)
{
if (mVertexDeclDirty)
{
VertexDeclaration* decl = mVertexData->vertexDeclaration;
decl->removeAllElements();
size_t offset = 0;
// Add a description for the buffer of the positions of the vertices
decl->addElement(0, offset, VET_FLOAT3, VES_POSITION);
offset += VertexElement::getTypeSize(VET_FLOAT3);
if (mUseVertexColour)
{
decl->addElement(0, offset, VET_COLOUR, VES_DIFFUSE);
offset += VertexElement::getTypeSize(VET_COLOUR);
}
if (mUseTexCoords)
{
decl->addElement(0, offset, VET_FLOAT2, VES_TEXTURE_COORDINATES);
}
if (!mUseTexCoords && !mUseVertexColour)
{
LogManager::getSingleton().logMessage(
"Error - BillboardChain '" + mName + "' is using neither "
"texture coordinates or vertex colours; it will not be "
"visible on some rendering APIs so you should change this "
"so you use one or the other.");
}
mVertexDeclDirty = false;
}
}
开发者ID:dryadf68116,项目名称:vuforia-gamekit-integration,代码行数:35,代码来源:OgreBillboardChain.cpp
示例3: VertexData
//---------------------------------------------------------------------
void BorderPanelOverlayElement::initialise(void)
{
bool init = !mInitialised;
// init mRenderOp2 before calling superclass, as virtual _restoreManualHardwareResources would be called within
if (init)
{
// Setup render op in advance
mRenderOp2.vertexData = OGRE_NEW VertexData();
mRenderOp2.vertexData->vertexCount = 4 * 8; // 8 cells, can't necessarily share vertices cos
// texcoords may differ
mRenderOp2.vertexData->vertexStart = 0;
// Vertex declaration
VertexDeclaration* decl = mRenderOp2.vertexData->vertexDeclaration;
// Position and texture coords each have their own buffers to allow
// each to be edited separately with the discard flag
decl->addElement(POSITION_BINDING, 0, VET_FLOAT3, VES_POSITION);
decl->addElement(TEXCOORD_BINDING, 0, VET_FLOAT2, VES_TEXTURE_COORDINATES, 0);
// Index data
mRenderOp2.operationType = RenderOperation::OT_TRIANGLE_LIST;
mRenderOp2.useIndexes = true;
mRenderOp2.indexData = OGRE_NEW IndexData();
mRenderOp2.indexData->indexCount = 8 * 6;
mRenderOp2.indexData->indexStart = 0;
mRenderOp2.useGlobalInstancingVertexBufferIsAvailable = false;
// Create sub-object for rendering border
mBorderRenderable = OGRE_NEW BorderRenderable(this);
}
// superclass will handle the interior panel area and call _restoreManualHardwareResources
PanelOverlayElement::initialise();
}
开发者ID:LiberatorUSA,项目名称:GUCEF,代码行数:36,代码来源:OgreBorderPanelOverlayElement.cpp
示例4: VertexData
void WireBoundingBox::_initWireBoundingBox()
{
mRenderOp.vertexData = OGRE_NEW VertexData();
mRenderOp.indexData = 0;
mRenderOp.vertexData->vertexCount = 24;
mRenderOp.vertexData->vertexStart = 0;
mRenderOp.operationType = RenderOperation::OT_LINE_LIST;
mRenderOp.useIndexes = false;
mRenderOp.useGlobalInstancingVertexBufferIsAvailable = false;
VertexDeclaration* decl = mRenderOp.vertexData->vertexDeclaration;
VertexBufferBinding* bind = mRenderOp.vertexData->vertexBufferBinding;
decl->addElement(POSITION_BINDING, 0, VET_FLOAT3, VES_POSITION);
HardwareVertexBufferSharedPtr vbuf =
HardwareBufferManager::getSingleton().createVertexBuffer(
decl->getVertexSize(POSITION_BINDING),
mRenderOp.vertexData->vertexCount,
HardwareBuffer::HBU_STATIC_WRITE_ONLY);
// Bind buffer
bind->setBinding(POSITION_BINDING, vbuf);
// set basic white material
this->setMaterial("BaseWhiteNoLighting");
}
开发者ID:digimatic,项目名称:ogre,代码行数:32,代码来源:OgreWireBoundingBox.cpp
示例5: assert
void GeomUtils::createQuad(VertexData*& vertexData)
{
assert(vertexData);
vertexData->vertexCount = 4;
vertexData->vertexStart = 0;
VertexDeclaration* vertexDecl = vertexData->vertexDeclaration;
VertexBufferBinding* bind = vertexData->vertexBufferBinding;
vertexDecl->addElement(0, 0, VET_FLOAT3, VES_POSITION);
HardwareVertexBufferSharedPtr vbuf =
HardwareBufferManager::getSingleton().createVertexBuffer(
vertexDecl->getVertexSize(0),
vertexData->vertexCount,
HardwareBuffer::HBU_STATIC_WRITE_ONLY);
// Bind buffer
bind->setBinding(0, vbuf);
// Upload data
float data[]={
-1,1,-1, // corner 1
-1,-1,-1, // corner 2
1,1,-1, // corner 3
1,-1,-1}; // corner 4
vbuf->writeData(0, sizeof(data), data, true);
}
开发者ID:Anti-Mage,项目名称:ogre,代码行数:28,代码来源:GeomUtils.cpp
示例6: VertexDeclaration
VertexDeclaration* VertexBufferManager::CreateVertexDeclaration( const std::string &name, VertexPointer *pointers, size_t count )
{
VertexDeclaration *pDecl = new VertexDeclaration();
pDecl->AddPointers( pointers, count );
mVertexDeclarations[ name ] = pDecl;
return pDecl;
}
开发者ID:Kaaml,项目名称:Vxy,代码行数:7,代码来源:VBOManager.cpp
示例7: VertexData
//---------------------------------------------------------------------
void PanelOverlayElement::initialise(void)
{
bool init = !mInitialised;
OverlayContainer::initialise();
if (init)
{
// Setup render op in advance
mRenderOp.vertexData = OGRE_NEW VertexData();
// Vertex declaration: 1 position, add texcoords later depending on #layers
// Create as separate buffers so we can lock & discard separately
VertexDeclaration* decl = mRenderOp.vertexData->vertexDeclaration;
decl->addElement(POSITION_BINDING, 0, VET_FLOAT3, VES_POSITION);
// Basic vertex data
mRenderOp.vertexData->vertexStart = 0;
mRenderOp.vertexData->vertexCount = 4;
// No indexes & issue as a strip
mRenderOp.useIndexes = false;
mRenderOp.operationType = RenderOperation::OT_TRIANGLE_STRIP;
mRenderOp.useGlobalInstancingVertexBufferIsAvailable = false;
mInitialised = true;
_restoreManualHardwareResources();
}
}
开发者ID:OGRECave,项目名称:ogre,代码行数:28,代码来源:OgrePanelOverlayElement.cpp
示例8: VertexData
void TextAreaOverlayElement::initialise(void)
{
if (!mInitialised)
{
// Set up the render op
// Combine positions and texture coords since they tend to change together
// since character sizes are different
mRenderOp.vertexData = OGRE_NEW VertexData();
VertexDeclaration* decl = mRenderOp.vertexData->vertexDeclaration;
size_t offset = 0;
// Positions
decl->addElement(POS_TEX_BINDING, offset, VET_FLOAT3, VES_POSITION);
offset += VertexElement::getTypeSize(VET_FLOAT3);
// Texcoords
decl->addElement(POS_TEX_BINDING, offset, VET_FLOAT2, VES_TEXTURE_COORDINATES, 0);
// Colours - store these in a separate buffer because they change less often
decl->addElement(COLOUR_BINDING, 0, VET_COLOUR, VES_DIFFUSE);
mRenderOp.operationType = RenderOperation::OT_TRIANGLE_LIST;
mRenderOp.useIndexes = false;
mRenderOp.vertexData->vertexStart = 0;
mRenderOp.useGlobalInstancingVertexBufferIsAvailable = false;
// Vertex buffer will be created in checkMemoryAllocation
mRenderOp.srcRenderable = this;
checkMemoryAllocation( DEFAULT_INITIAL_CHARS );
mInitialised = true;
}
}
开发者ID:whztt07,项目名称:ogre3d,代码行数:30,代码来源:OgreTextAreaOverlayElement.cpp
示例9:
bool areCompatible
(
const VertexDeclaration &u,
const VertexDeclaration &v
)
{
if( u.count() != v.count() )
return false;
for(std::size_t i(0); i<u.count(); ++i)
{
bool have = false;
for(std::size_t j(0); j<v.count(); ++j)
{
if(u[i].getSemantic() == v[j].getSemantic() && u[i].getType() == v[j].getType() )
have = true;
if(have)
break;
}
if(!have)
return false;
}
return true;
}
开发者ID:anonreclaimer,项目名称:plastic-dev,代码行数:28,代码来源:VertexDeclaration.cpp
示例10: _restoreManualHardwareResources
//---------------------------------------------------------------------
void TextAreaOverlayElement::_restoreManualHardwareResources()
{
if(!mInitialised)
return;
// 6 verts per char since we're doing tri lists without indexes
// Allocate space for positions & texture coords
// Note - mRenderOp.vertexData->vertexCount will be less than allocatedVertexCount
size_t allocatedVertexCount = mAllocSize * 6;
VertexDeclaration* decl = mRenderOp.vertexData->vertexDeclaration;
VertexBufferBinding* bind = mRenderOp.vertexData->vertexBufferBinding;
// Create dynamic since text tends to change a lot
// positions & texcoords
HardwareVertexBufferSharedPtr vbuf =
HardwareBufferManager::getSingleton().
createVertexBuffer(
decl->getVertexSize(POS_TEX_BINDING),
allocatedVertexCount,
HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY);
bind->setBinding(POS_TEX_BINDING, vbuf);
// colours
vbuf = HardwareBufferManager::getSingleton().
createVertexBuffer(
decl->getVertexSize(COLOUR_BINDING),
allocatedVertexCount,
HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY);
bind->setBinding(COLOUR_BINDING, vbuf);
// Buffers are restored, but with trash within
mGeomPositionsOutOfDate = true;
mGeomUVsOutOfDate = true;
mColoursChanged = true;
}
开发者ID:LiberatorUSA,项目名称:GUCEF,代码行数:36,代码来源:OgreTextAreaOverlayElement.cpp
示例11: VertexData
//---------------------------------------------------------------------
void PanelOverlayElement::initialise(void)
{
bool init = !mInitialised;
OverlayContainer::initialise();
if (init)
{
// Setup render op in advance
mRenderOp.vertexData = OGRE_NEW VertexData();
// Vertex declaration: 1 position, add texcoords later depending on #layers
// Create as separate buffers so we can lock & discard separately
VertexDeclaration* decl = mRenderOp.vertexData->vertexDeclaration;
decl->addElement(POSITION_BINDING, 0, VET_FLOAT3, VES_POSITION);
// Basic vertex data
mRenderOp.vertexData->vertexStart = 0;
mRenderOp.vertexData->vertexCount = 4;
// Vertex buffer #1
HardwareVertexBufferSharedPtr vbuf =
HardwareBufferManager::getSingleton().createVertexBuffer(
decl->getVertexSize(POSITION_BINDING), mRenderOp.vertexData->vertexCount,
HardwareBuffer::HBU_STATIC_WRITE_ONLY// mostly static except during resizing
);
// Bind buffer
mRenderOp.vertexData->vertexBufferBinding->setBinding(POSITION_BINDING, vbuf);
// No indexes & issue as a strip
mRenderOp.useIndexes = false;
mRenderOp.operationType = RenderOperation::OT_TRIANGLE_STRIP;
mInitialised = true;
}
}
开发者ID:jjiezheng,项目名称:pap_full,代码行数:35,代码来源:OgrePanelOverlayElement.cpp
示例12:
void Line3D::drawLines(void)
{
if(mDrawn)
return;
else
mDrawn = true;
// Initialization stuff
mRenderOp.indexData = 0;
mRenderOp.vertexData->vertexCount = mPoints.size();
mRenderOp.vertexData->vertexStart = 0;
mRenderOp.operationType = RenderOperation::OT_LINE_LIST; // OT_LINE_LIST, OT_LINE_STRIP
mRenderOp.useIndexes = false;
VertexDeclaration *decl = mRenderOp.vertexData->vertexDeclaration;
VertexBufferBinding *bind = mRenderOp.vertexData->vertexBufferBinding;
decl->addElement(POSITION_BINDING, 0, VET_FLOAT3, VES_POSITION);
HardwareVertexBufferSharedPtr vbuf =
HardwareBufferManager::getSingleton().createVertexBuffer(
decl->getVertexSize(POSITION_BINDING),
mRenderOp.vertexData->vertexCount,
HardwareBuffer::HBU_STATIC_WRITE_ONLY);
bind->setBinding(POSITION_BINDING, vbuf);
// Drawing stuff
int size = mPoints.size();
Vector3 vaabMin = mPoints[0];
Vector3 vaabMax = mPoints[0];
Real *prPos = static_cast<Real*>(vbuf->lock(HardwareBuffer::HBL_DISCARD));
for(int i = 0; i < size; i++)
{
*prPos++ = mPoints[i].x;
*prPos++ = mPoints[i].y;
*prPos++ = mPoints[i].z;
if(mPoints[i].x < vaabMin.x)
vaabMin.x = mPoints[i].x;
if(mPoints[i].y < vaabMin.y)
vaabMin.y = mPoints[i].y;
if(mPoints[i].z < vaabMin.z)
vaabMin.z = mPoints[i].z;
if(mPoints[i].x > vaabMax.x)
vaabMax.x = mPoints[i].x;
if(mPoints[i].y > vaabMax.y)
vaabMax.y = mPoints[i].y;
if(mPoints[i].z > vaabMax.z)
vaabMax.z = mPoints[i].z;
}
vbuf->unlock();
mBox.setExtents(vaabMin, vaabMax);
}
开发者ID:brettminnie,项目名称:BDBGame,代码行数:59,代码来源:Line3D.cpp
示例13: doadvance
void VertexBuffer::doadvance()
{
VertexDeclaration* vd = m_vertexdeclaration;
if( vd )
{
vd->advance();
}
}
开发者ID:delfigamer,项目名称:mist,代码行数:8,代码来源:vertexbuffer.cpp
示例14: GetTempMeshDecl
VertexDeclaration TerrainManager::GetTempMeshDecl()
{
VertexDeclaration decl;
decl.Add( VertexTypes::VEC3 ); // pos
decl.Add( VertexTypes::VEC3 ); // normal
decl.Add( VertexTypes::VEC2 ); // uv
return decl;
}
开发者ID:warddav16,项目名称:BoredomEngine,代码行数:8,代码来源:TerrainManager.cpp
示例15: VertexData
//---------------------------------------------------------------------
void PrefabFactory::createPlane(Mesh* mesh)
{
SubMesh* sub = mesh->createSubMesh();
float vertices[32] = {
-100, -100, 0, // pos
0,0,1, // normal
0,1, // texcoord
100, -100, 0,
0,0,1,
1,1,
100, 100, 0,
0,0,1,
1,0,
-100, 100, 0 ,
0,0,1,
0,0
};
mesh->sharedVertexData = OGRE_NEW VertexData();
mesh->sharedVertexData->vertexCount = 4;
VertexDeclaration* decl = mesh->sharedVertexData->vertexDeclaration;
VertexBufferBinding* bind = mesh->sharedVertexData->vertexBufferBinding;
size_t offset = 0;
decl->addElement(0, offset, VET_FLOAT3, VES_POSITION);
offset += VertexElement::getTypeSize(VET_FLOAT3);
decl->addElement(0, offset, VET_FLOAT3, VES_NORMAL);
offset += VertexElement::getTypeSize(VET_FLOAT3);
decl->addElement(0, offset, VET_FLOAT2, VES_TEXTURE_COORDINATES, 0);
offset += VertexElement::getTypeSize(VET_FLOAT2);
HardwareVertexBufferSharedPtr vbuf =
HardwareBufferManager::getSingleton().createVertexBuffer(
offset, 4, HardwareBuffer::HBU_STATIC_WRITE_ONLY);
bind->setBinding(0, vbuf);
vbuf->writeData(0, vbuf->getSizeInBytes(), vertices, true);
sub->useSharedVertices = true;
HardwareIndexBufferSharedPtr ibuf = HardwareBufferManager::getSingleton().
createIndexBuffer(
HardwareIndexBuffer::IT_16BIT,
6,
HardwareBuffer::HBU_STATIC_WRITE_ONLY);
unsigned short faces[6] = {0,1,2,
0,2,3 };
sub->indexData->indexBuffer = ibuf;
sub->indexData->indexCount = 6;
sub->indexData->indexStart =0;
ibuf->writeData(0, ibuf->getSizeInBytes(), faces, true);
mesh->_setBounds(AxisAlignedBox(-100,-100,0,100,100,0), true);
mesh->_setBoundingSphereRadius(Math::Sqrt(100*100+100*100));
}
开发者ID:terminus510,项目名称:OgreBulletTest,代码行数:55,代码来源:OgrePrefabFactory.cpp
示例16: setVertexAttributesBaseIndex
void RenderState::setVertexAttributesBaseIndex(const VertexDeclaration& decl, size_t index, bool force)
{
#if !defined(ET_CONSOLE_APPLICATION)
for (size_t i = 0; i < decl.numElements(); ++i)
{
const VertexElement& e = decl.element(i);
size_t dataOffset = index * (decl.interleaved() ? decl.dataSize() : vertexAttributeTypeSize(e.type()));
setVertexAttribPointer(e, dataOffset, force);
}
#endif
}
开发者ID:sergeyreznik,项目名称:et-engine,代码行数:11,代码来源:renderstate.cpp
示例17: clone
//-----------------------------------------------------------------------------
VertexDeclaration* VertexDeclaration::clone(void)
{
VertexDeclaration* ret = HardwareBufferManager::getSingleton().createVertexDeclaration();
VertexElementList::const_iterator i, iend;
iend = mElementList.end();
for (i = mElementList.begin(); i != iend; ++i)
{
ret->addElement(i->getSource(), i->getOffset(), i->getType(), i->getSemantic(), i->getIndex());
}
return ret;
}
开发者ID:andyhebear,项目名称:likeleon,代码行数:13,代码来源:OgreHardwareVertexBuffer.cpp
示例18: createProceduralParticleSystem
ProceduralManualObject* createProceduralParticleSystem()
{
particleSystem = static_cast<ProceduralManualObject*>
(mSceneMgr->createMovableObject("ParticleGSEntity", ProceduralManualObjectFactory::FACTORY_TYPE_NAME));
particleSystem->setMaterial("Ogre/ParticleGS/Display");
//Generate the geometry that will seed the particle system
ManualObject* particleSystemSeed = mSceneMgr->createManualObject("ParticleSeed");
//This needs to be the initial launcher particle
particleSystemSeed->begin("Ogre/ParticleGS/Display", RenderOperation::OT_POINT_LIST);
particleSystemSeed->position(0,0,0); //Position
particleSystemSeed->textureCoord(1); //Timer
particleSystemSeed->textureCoord(0); //Type
particleSystemSeed->textureCoord(0,0,0); //Velocity
particleSystemSeed->end();
//Generate the RenderToBufferObject
RenderToVertexBufferSharedPtr r2vbObject =
HardwareBufferManager::getSingleton().createRenderToVertexBuffer();
r2vbObject->setRenderToBufferMaterialName("Ogre/ParticleGS/Generate");
//Apply the random texture
TexturePtr randomTexture = RandomTools::generateRandomVelocityTexture();
r2vbObject->getRenderToBufferMaterial()->getTechnique(0)->getPass(0)->
getTextureUnitState("RandomTexture")->setTextureName(
randomTexture->getName(), randomTexture->getTextureType());
r2vbObject->setOperationType(RenderOperation::OT_POINT_LIST);
r2vbObject->setMaxVertexCount(16000);
r2vbObject->setResetsEveryUpdate(false);
VertexDeclaration* vertexDecl = r2vbObject->getVertexDeclaration();
size_t offset = 0;
offset += vertexDecl->addElement(0, offset, VET_FLOAT3, VES_POSITION).getSize(); //Position
offset += vertexDecl->addElement(0, offset, VET_FLOAT1, VES_TEXTURE_COORDINATES, 0).getSize(); //Timer
offset += vertexDecl->addElement(0, offset, VET_FLOAT1, VES_TEXTURE_COORDINATES, 1).getSize(); //Type
offset += vertexDecl->addElement(0, offset, VET_FLOAT3, VES_TEXTURE_COORDINATES, 2).getSize(); //Velocity
//Bind the two together
particleSystem->setRenderToVertexBuffer(r2vbObject);
particleSystem->setManualObject(particleSystemSeed);
//Set bounds
AxisAlignedBox aabb;
aabb.setMinimum(-100,-100,-100);
aabb.setMaximum(100,100,100);
particleSystem->setBoundingBox(aabb);
return particleSystem;
}
开发者ID:Argos86,项目名称:dt2370,代码行数:49,代码来源:ParticleGS.cpp
示例19: logObjectInfo
//-----------------------------------------------------------------------------
void GL3PlusRenderToVertexBuffer::bindVerticesOutput(Pass* pass)
{
VertexDeclaration* declaration = mVertexData->vertexDeclaration;
size_t elemCount = declaration->getElementCount();
if (elemCount > 0)
{
GLuint linkProgramId = 0;
// Have GLSL shaders, using varying attributes
if(Root::getSingleton().getRenderSystem()->getCapabilities()->hasCapability(RSC_SEPARATE_SHADER_OBJECTS))
{
GLSLProgramPipeline* programPipeline =
GLSLProgramPipelineManager::getSingleton().getActiveProgramPipeline();
linkProgramId = programPipeline->getGLProgramPipelineHandle();
}
else
{
GLSLLinkProgram* linkProgram = GLSLLinkProgramManager::getSingleton().getActiveLinkProgram();
linkProgramId = linkProgram->getGLProgramHandle();
}
// Note: 64 is the minimum number of interleaved attributes allowed by GL_EXT_transform_feedback
// So we are using it. Otherwise we could query during rendersystem initialisation and use a dynamic sized array.
// But that would require C99.
// const GLchar *names[64];
const GLchar *names[1] = {"gl_Position"};//, "oUv0", "oUv1", "oUv2" };
// vector<const GLchar*>::type names;
// for (unsigned short e = 0; e < elemCount; e++)
// {
// const VertexElement* element = declaration->getElement(e);
// String varyingName = getSemanticVaryingName(element->getSemantic(), element->getIndex());
// names[e] = varyingName.c_str();
//// names.push_back(varyingName.c_str());
// }
OGRE_CHECK_GL_ERROR(glTransformFeedbackVaryings(linkProgramId, elemCount, names, GL_INTERLEAVED_ATTRIBS));
OGRE_CHECK_GL_ERROR(glLinkProgram(linkProgramId));
GLint didLink = 0;
OGRE_CHECK_GL_ERROR(glGetProgramiv( linkProgramId, GL_LINK_STATUS, &didLink ));
logObjectInfo( String("RVB GLSL link result : "), linkProgramId );
if(glIsProgram(linkProgramId))
{
glValidateProgram(linkProgramId);
}
logObjectInfo( String("RVB GLSL validation result : "), linkProgramId );
}
}
开发者ID:Ali-il,项目名称:gamekit,代码行数:48,代码来源:OgreGL3PlusRenderToVertexBuffer.cpp
示例20: setVertexAttributes
void RenderState::setVertexAttributes(const VertexDeclaration& decl, bool force)
{
#if !defined(ET_CONSOLE_APPLICATION)
for (uint32_t i = 0; i < VertexAttributeUsage_max; ++i)
setVertexAttribEnabled(i, decl.has(static_cast<VertexAttributeUsage>(i)), force);
setVertexAttributesBaseIndex(decl, 0);
#endif
}
开发者ID:sergeyreznik,项目名称:et-engine,代码行数:9,代码来源:renderstate.cpp
注:本文中的VertexDeclaration类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论