这篇教程C++ FLUSH_CURRENT函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中FLUSH_CURRENT函数的典型用法代码示例。如果您正苦于以下问题:C++ FLUSH_CURRENT函数的具体用法?C++ FLUSH_CURRENT怎么用?C++ FLUSH_CURRENT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了FLUSH_CURRENT函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: _mesa_validate_DrawElementsInstancedGLboolean_mesa_validate_DrawElementsInstanced(struct gl_context *ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei numInstances){ FLUSH_CURRENT(ctx, 0); if (numInstances < 0) { _mesa_error(ctx, GL_INVALID_VALUE, "glDrawElementsInstanced(numInstances=%d)", numInstances); return GL_FALSE; } return validate_DrawElements_common(ctx, mode, count, type, indices, "glDrawElementsInstanced") && (numInstances > 0);}
开发者ID:threader,项目名称:mesa-11.1.1-ppc-r300-debian,代码行数:17,
示例2: _mesa_GetVertexAttribfvARBvoid GLAPIENTRY_mesa_GetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat *params){ GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (index == 0 || index >= MAX_VERTEX_PROGRAM_ATTRIBS) { _mesa_error(ctx, GL_INVALID_VALUE, "glGetVertexAttribfvARB(index)"); return; } switch (pname) { case GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB: params[0] = (GLfloat) ctx->Array.VertexAttrib[index].Enabled; break; case GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB: params[0] = (GLfloat) ctx->Array.VertexAttrib[index].Size; break; case GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB: params[0] = (GLfloat) ctx->Array.VertexAttrib[index].Stride; break; case GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB: params[0] = (GLfloat) ctx->Array.VertexAttrib[index].Type; break; case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB: params[0] = ctx->Array.VertexAttrib[index].Normalized; break; case GL_CURRENT_VERTEX_ATTRIB_ARB: FLUSH_CURRENT(ctx, 0); /* XXX should read: COPY_4V(params, ctx->Current.Attrib[VERT_ATTRIB_GENERIC0 + index]); */ COPY_4V(params, ctx->Current.Attrib[index]); break; case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB: if (!ctx->Extensions.ARB_vertex_buffer_object) { _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribfvARB(pname)"); return; } params[0] = (GLfloat) ctx->Array.VertexAttrib[index].BufferObj->Name; default: _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribfvARB(pname)"); return; }}
开发者ID:Ionic,项目名称:nx-libs,代码行数:45,
示例3: _mesa_GetVertexAttribivNV/** * Get a vertex (or vertex array) attribute. * /note Not compiled into display lists. * /note Called from the GL API dispatcher. */void GLAPIENTRY_mesa_GetVertexAttribivNV(GLuint index, GLenum pname, GLint *params){ GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (index >= MAX_NV_VERTEX_PROGRAM_INPUTS) { _mesa_error(ctx, GL_INVALID_VALUE, "glGetVertexAttribdvNV(index)"); return; } switch (pname) { case GL_ATTRIB_ARRAY_SIZE_NV: params[0] = ctx->Array.ArrayObj->VertexAttrib[index].Size; break; case GL_ATTRIB_ARRAY_STRIDE_NV: params[0] = ctx->Array.ArrayObj->VertexAttrib[index].Stride; break; case GL_ATTRIB_ARRAY_TYPE_NV: params[0] = ctx->Array.ArrayObj->VertexAttrib[index].Type; break; case GL_CURRENT_ATTRIB_NV: if (index == 0) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetVertexAttribivNV(index == 0)"); return; } FLUSH_CURRENT(ctx, 0); params[0] = (GLint) ctx->Current.Attrib[index][0]; params[1] = (GLint) ctx->Current.Attrib[index][1]; params[2] = (GLint) ctx->Current.Attrib[index][2]; params[3] = (GLint) ctx->Current.Attrib[index][3]; break; case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB: if (!ctx->Extensions.ARB_vertex_buffer_object) { _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribdvNV"); return; } params[0] = ctx->Array.ArrayObj->VertexAttrib[index].BufferObj->Name; break; default: _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribdvNV"); return; }}
开发者ID:Starlink,项目名称:mesa,代码行数:50,
示例4: _mesa_GetVertexAttribivNV/** * Get a vertex (or vertex array) attribute. * /note Not compiled into display lists. * /note Called from the GL API dispatcher. */void GLAPIENTRY_mesa_GetVertexAttribivNV(GLuint index, GLenum pname, GLint *params){ const struct gl_client_array *array; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (index >= MAX_NV_VERTEX_PROGRAM_INPUTS) { _mesa_error(ctx, GL_INVALID_VALUE, "glGetVertexAttribdvNV(index)"); return; } array = &ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_GENERIC(index)]; switch (pname) { case GL_ATTRIB_ARRAY_SIZE_NV: params[0] = array->Size; break; case GL_ATTRIB_ARRAY_STRIDE_NV: params[0] = array->Stride; break; case GL_ATTRIB_ARRAY_TYPE_NV: params[0] = array->Type; break; case GL_CURRENT_ATTRIB_NV: if (index == 0) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetVertexAttribivNV(index == 0)"); return; } FLUSH_CURRENT(ctx, 0); params[0] = (GLint) ctx->Current.Attrib[index][0]; params[1] = (GLint) ctx->Current.Attrib[index][1]; params[2] = (GLint) ctx->Current.Attrib[index][2]; params[3] = (GLint) ctx->Current.Attrib[index][3]; break; case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB: params[0] = array->BufferObj->Name; break; default: _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribdvNV"); return; }}
开发者ID:FASTCHIP,项目名称:kernel_3.4.67_lenovo_s939_mtk6592,代码行数:49,
示例5: rasterpos/** * Helper function for all the RasterPos functions. */static voidrasterpos(GLfloat x, GLfloat y, GLfloat z, GLfloat w){ GET_CURRENT_CONTEXT(ctx); GLfloat p[4]; p[0] = x; p[1] = y; p[2] = z; p[3] = w; FLUSH_VERTICES(ctx, 0); FLUSH_CURRENT(ctx, 0); if (ctx->NewState) _mesa_update_state( ctx ); ctx->Driver.RasterPos(ctx, p);}
开发者ID:mdaniel,项目名称:virtualbox-org-svn-vbox-trunk,代码行数:22,
示例6: rasterpos/** * Helper function for all the RasterPos functions. */static voidrasterpos(GLfloat x, GLfloat y, GLfloat z, GLfloat w){ GET_CURRENT_CONTEXT(ctx); GLfloat p[4]; p[0] = x; p[1] = y; p[2] = z; p[3] = w; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); FLUSH_CURRENT(ctx, 0); if (ctx->NewState) _mesa_update_state( ctx ); ctx->Driver.RasterPos(ctx, p);}
开发者ID:GYGit,项目名称:reactos,代码行数:22,
示例7: _mesa_validate_DrawTransformFeedbackGLboolean_mesa_validate_DrawTransformFeedback(struct gl_context *ctx, GLenum mode, struct gl_transform_feedback_object *obj, GLuint stream, GLsizei numInstances){ FLUSH_CURRENT(ctx, 0); if (!_mesa_valid_prim_mode(ctx, mode, "glDrawTransformFeedback*(mode)")) { return GL_FALSE; } if (!obj) { _mesa_error(ctx, GL_INVALID_VALUE, "glDrawTransformFeedback*(name)"); return GL_FALSE; } if (!obj->EndedAnytime) { _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawTransformFeedback*"); return GL_FALSE; } if (stream >= ctx->Const.MaxVertexStreams) { _mesa_error(ctx, GL_INVALID_VALUE, "glDrawTransformFeedbackStream*(index>=MaxVertexStream)"); return GL_FALSE; } if (numInstances <= 0) { if (numInstances < 0) _mesa_error(ctx, GL_INVALID_VALUE, "glDrawTransformFeedback*Instanced(numInstances=%d)", numInstances); return GL_FALSE; } if (!check_valid_to_render(ctx, "glDrawTransformFeedback*")) { return GL_FALSE; } return GL_TRUE;}
开发者ID:CSRedRat,项目名称:mesa-1,代码行数:43,
示例8: window_pos3f/** * All glWindowPosMESA and glWindowPosARB commands call this function to * update the current raster position. */static voidwindow_pos3f(GLfloat x, GLfloat y, GLfloat z){ GET_CURRENT_CONTEXT(ctx); GLfloat z2; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); FLUSH_CURRENT(ctx, 0); z2 = CLAMP(z, 0.0F, 1.0F) * (ctx->Viewport.Far - ctx->Viewport.Near) + ctx->Viewport.Near; /* set raster position */ ctx->Current.RasterPos[0] = x; ctx->Current.RasterPos[1] = y; ctx->Current.RasterPos[2] = z2; ctx->Current.RasterPos[3] = 1.0F; ctx->Current.RasterPosValid = GL_TRUE; if (ctx->Fog.FogCoordinateSource == GL_FOG_COORDINATE_EXT) ctx->Current.RasterDistance = ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; else ctx->Current.RasterDistance = 0.0; /* raster color = current color or index */ ctx->Current.RasterColor[0] = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR][0], 0.0F, 1.0F); ctx->Current.RasterColor[1] = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR][1], 0.0F, 1.0F); ctx->Current.RasterColor[2] = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR][2], 0.0F, 1.0F); ctx->Current.RasterColor[3] = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR][3], 0.0F, 1.0F); /* raster texcoord = current texcoord */ COPY_4FV( ctx->Current.RasterTexCoords, ctx->Current.Attrib[VERT_ATTRIB_TEX] ); if (ctx->RenderMode==GL_SELECT) { _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] ); }}
开发者ID:GYGit,项目名称:reactos,代码行数:46,
示例9: _mesa_validate_MultiDrawElements/** * Error checking for glMultiDrawElements(). Includes parameter checking * and VBO bounds checking. * /return GL_TRUE if OK to render, GL_FALSE if error found */GLboolean_mesa_validate_MultiDrawElements(struct gl_context *ctx, GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLuint primcount){ unsigned i; FLUSH_CURRENT(ctx, 0); for (i = 0; i < primcount; i++) { if (count[i] < 0) { _mesa_error(ctx, GL_INVALID_VALUE, "glMultiDrawElements(count)" ); return GL_FALSE; } } if (!_mesa_valid_prim_mode(ctx, mode, "glMultiDrawElements")) { return GL_FALSE; } if (!valid_elements_type(ctx, type, "glMultiDrawElements")) return GL_FALSE; if (!check_valid_to_render(ctx, "glMultiDrawElements")) return GL_FALSE; /* Not using a VBO for indices, so avoid NULL pointer derefs later. */ if (!_mesa_is_bufferobj(ctx->Array.VAO->IndexBufferObj)) { for (i = 0; i < primcount; i++) { if (!indices[i]) return GL_FALSE; } } return GL_TRUE;}
开发者ID:erdincay,项目名称:vcxsrv-linux2windows,代码行数:44,
示例10: _mesa_GetVertexAttribfvNV/** * Get a vertex (or vertex array) attribute. * /note Not compiled into display lists. * /note Called from the GL API dispatcher. */void GLAPIENTRY_mesa_GetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat *params){ const struct gl_client_array *array; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (index >= MAX_NV_VERTEX_PROGRAM_INPUTS) { _mesa_error(ctx, GL_INVALID_VALUE, "glGetVertexAttribdvNV(index)"); return; } array = &ctx->Array.ArrayObj->VertexAttrib[index]; switch (pname) { case GL_ATTRIB_ARRAY_SIZE_NV: params[0] = (GLfloat) array->Size; break; case GL_ATTRIB_ARRAY_STRIDE_NV: params[0] = (GLfloat) array->Stride; break; case GL_ATTRIB_ARRAY_TYPE_NV: params[0] = (GLfloat) array->Type; break; case GL_CURRENT_ATTRIB_NV: if (index == 0) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetVertexAttribfvNV(index == 0)"); return; } FLUSH_CURRENT(ctx, 0); COPY_4V(params, ctx->Current.Attrib[index]); break; default: _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribdvNV"); return; }}
开发者ID:aljen,项目名称:haiku-opengl,代码行数:43,
示例11: _mesa_validate_DispatchComputeGLboolean_mesa_validate_DispatchCompute(struct gl_context *ctx, const GLuint *num_groups){ int i; FLUSH_CURRENT(ctx, 0); if (!check_valid_to_compute(ctx, "glDispatchCompute")) return GL_FALSE; for (i = 0; i < 3; i++) { /* From the OpenGL 4.3 Core Specification, Chapter 19, Compute Shaders: * * "An INVALID_VALUE error is generated if any of num_groups_x, * num_groups_y and num_groups_z are greater than or equal to the * maximum work group count for the corresponding dimension." * * However, the "or equal to" portions appears to be a specification * bug. In all other areas, the specification appears to indicate that * the number of workgroups can match the MAX_COMPUTE_WORK_GROUP_COUNT * value. For example, under DispatchComputeIndirect: * * "If any of num_groups_x, num_groups_y or num_groups_z is greater than * the value of MAX_COMPUTE_WORK_GROUP_COUNT for the corresponding * dimension then the results are undefined." * * Additionally, the OpenGLES 3.1 specification does not contain "or * equal to" as an error condition. */ if (num_groups[i] > ctx->Const.MaxComputeWorkGroupCount[i]) { _mesa_error(ctx, GL_INVALID_VALUE, "glDispatchCompute(num_groups_%c)", 'x' + i); return GL_FALSE; } } return GL_TRUE;}
开发者ID:erdincay,项目名称:vcxsrv-linux2windows,代码行数:38,
示例12: _mesa_validate_DrawArraysInstancedGLboolean_mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint first, GLsizei count, GLsizei numInstances){ struct gl_transform_feedback_object *xfb_obj = ctx->TransformFeedback.CurrentObject; FLUSH_CURRENT(ctx, 0); if (count < 0) { _mesa_error(ctx, GL_INVALID_VALUE, "glDrawArraysInstanced(count=%d)", count); return GL_FALSE; } if (first < 0) { _mesa_error(ctx, GL_INVALID_VALUE, "glDrawArraysInstanced(start=%d)", first); return GL_FALSE; } if (!_mesa_valid_prim_mode(ctx, mode, "glDrawArraysInstanced")) { return GL_FALSE; } if (numInstances <= 0) { if (numInstances < 0) _mesa_error(ctx, GL_INVALID_VALUE, "glDrawArraysInstanced(numInstances=%d)", numInstances); return GL_FALSE; } if (!check_valid_to_render(ctx, "glDrawArraysInstanced(invalid to render)")) return GL_FALSE; /* From the GLES3 specification, section 2.14.2 (Transform Feedback * Primitive Capture): * * The error INVALID_OPERATION is generated by DrawArrays and * DrawArraysInstanced if recording the vertices of a primitive to the * buffer objects being used for transform feedback purposes would result * in either exceeding the limits of any buffer object’s size, or in * exceeding the end position offset + size C++ FLUSH_VERTICES函数代码示例 C++ FLUSH_BATCH函数代码示例
|