本文整理汇总了C++中Vector4d::define方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector4d::define方法的具体用法?C++ Vector4d::define怎么用?C++ Vector4d::define使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector4d
的用法示例。
在下文中一共展示了Vector4d::define方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: renderGui
//----------------------------------------------------------------------------------------------------------
void GlesGuiRenderer::renderGui(Gui* gui)
{
if(gui == nullptr)
return;
const auto& elements = gui->getElements();
const uint32_t numFramesPerBatch = 50;
const uint32_t numVerticesPerFrame = 6;
const uint32_t numVectorsPerVertex = 2;
const float characterSize = 0.0625f;
static Vector4d frameVertices[numVectorsPerVertex * numFramesPerBatch * numVerticesPerFrame];
static uint32_t vertexIndices[numVerticesPerFrame] = {0, 2, 1, 2, 3, 1};
static Vector2d vertexOffsets[] =
{
Vector2d(),
Vector2d(),
Vector2d(),
Vector2d()
};
static Vector2d fontOffsets[4] =
{
Vector2d(0.0f, 0.0f),
Vector2d(characterSize, 0.0f),
Vector2d(0.0f, characterSize),
Vector2d(characterSize, characterSize)
};
glDisable(GL_DEPTH_TEST);
CHECK_GLES_ERROR("GlesGuiRenderer::renderGui: glDisable");
glEnable(GL_BLEND);
CHECK_GLES_ERROR("GlesGuiRenderer::renderGui: glEnable");
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
CHECK_GLES_ERROR("GlesGuiRenderer::renderGui: glBlendFunc");
// render frames
framesRenderingProgram_.set();
CHECK_GLES_ERROR("GlesGuiRenderer::renderGui: glUseProgram");
glEnableVertexAttribArray(LOCATION_ATTRIBUTE_POSITION);
CHECK_GLES_ERROR("GlesGuiRenderer::renderGui: glEnableVertexAttribArray");
glEnableVertexAttribArray(LOCATION_ATTRIBUTE_COLOR);
CHECK_GLES_ERROR("GlesGuiRenderer::renderGui: glEnableVertexAttribArray");
uint32_t numFrames = 0;
Vector4d* currentVertex = frameVertices;
for(auto it = elements.begin(); it != elements.end(); ++it)
{
if(!it->second)
continue;
auto element = it->second.get();
if(element->is(GUI_ELEMENT_HIDDEN))
continue;
Vector4d color = element->getBackgroundColor(GUI_ELEMENT_COLOR_DEFAULT);
if(element->is(GUI_ELEMENT_SELECTED))
color = element->getBackgroundColor(GUI_ELEMENT_COLOR_SELECTED);
else if(element->is(GUI_ELEMENT_TOUCHED))
color = element->getBackgroundColor(GUI_ELEMENT_COLOR_TOUCHED);
const auto& size = element->getSize();
const auto& position = element->getPosition();
vertexOffsets[1] = Vector2d(size.x, 0.0f);
vertexOffsets[2] = Vector2d(0.0f, size.y);
vertexOffsets[3] = Vector2d(size.x, size.y);
for(uint32_t i = 0; i < numVerticesPerFrame; ++i)
{
currentVertex->define(position + vertexOffsets[vertexIndices[i]], 0.0f, 1.0f);
++currentVertex;
*currentVertex = color;
++currentVertex;
}
++numFrames;
if(numFrames == numFramesPerBatch)
{
glVertexAttribPointer(LOCATION_ATTRIBUTE_POSITION, 4, GL_FLOAT, GL_FALSE,
2 * sizeof(Vector4d), static_cast<void*>(frameVertices));
glVertexAttribPointer(LOCATION_ATTRIBUTE_COLOR, 4, GL_FLOAT, GL_FALSE,
2 * sizeof(Vector4d), static_cast<void*>(frameVertices + 1));
glDrawArrays(GL_TRIANGLES, 0, numFrames * numVerticesPerFrame);
numFrames = 0;
currentVertex = frameVertices;
}
}
if(numFrames != 0)
{
//.........这里部分代码省略.........