⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arbprogram.c

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 C
📖 第 1 页 / 共 3 页
字号:
         _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribfvARB(pname)");         return;   }}void GLAPIENTRY_mesa_GetVertexAttribivARB(GLuint index, GLenum pname, GLint *params){   GLfloat fparams[4];   GET_CURRENT_CONTEXT(ctx);   ASSERT_OUTSIDE_BEGIN_END(ctx);   _mesa_GetVertexAttribfvARB(index, pname, fparams);   if (ctx->ErrorValue == GL_NO_ERROR) {      if (pname == GL_CURRENT_VERTEX_ATTRIB_ARB) {         COPY_4V_CAST(params, fparams, GLint);  /* float to int */      }      else {         params[0] = (GLint) fparams[0];      }   }}void GLAPIENTRY_mesa_GetVertexAttribPointervARB(GLuint index, GLenum pname, GLvoid **pointer){   GET_CURRENT_CONTEXT(ctx);   ASSERT_OUTSIDE_BEGIN_END(ctx);   if (index >= ctx->Const.VertexProgram.MaxAttribs) {      _mesa_error(ctx, GL_INVALID_VALUE, "glGetVertexAttribPointerARB(index)");      return;   }   if (pname != GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB) {      _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribPointerARB(pname)");      return;   }   *pointer = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[index].Ptr;}/** * Determine if id names a vertex or fragment program. * \note Not compiled into display lists. * \note Called from both glIsProgramNV and glIsProgramARB. * \param id is the program identifier * \return GL_TRUE if id is a program, else GL_FALSE. */GLboolean GLAPIENTRY_mesa_IsProgramARB(GLuint id){   struct gl_program *prog = NULL;    GET_CURRENT_CONTEXT(ctx);   ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);   if (id == 0)      return GL_FALSE;   prog = _mesa_lookup_program(ctx, id);   if (prog && (prog != &_mesa_DummyProgram))      return GL_TRUE;   else      return GL_FALSE;}void GLAPIENTRY_mesa_ProgramStringARB(GLenum target, GLenum format, GLsizei len,                       const GLvoid *string){   GET_CURRENT_CONTEXT(ctx);   ASSERT_OUTSIDE_BEGIN_END(ctx);   FLUSH_VERTICES(ctx, _NEW_PROGRAM);   if (format != GL_PROGRAM_FORMAT_ASCII_ARB) {      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramStringARB(format)");      return;   }   if (target == GL_VERTEX_PROGRAM_ARB       && ctx->Extensions.ARB_vertex_program) {      struct gl_vertex_program *prog = ctx->VertexProgram.Current;      _mesa_parse_arb_vertex_program(ctx, target, string, len, prog);            if (ctx->Program.ErrorPos == -1 && ctx->Driver.ProgramStringNotify)	 ctx->Driver.ProgramStringNotify( ctx, target, &prog->Base );   }   else if (target == GL_FRAGMENT_PROGRAM_ARB            && ctx->Extensions.ARB_fragment_program) {      struct gl_fragment_program *prog = ctx->FragmentProgram.Current;      _mesa_parse_arb_fragment_program(ctx, target, string, len, prog);      if (ctx->Program.ErrorPos == -1 && ctx->Driver.ProgramStringNotify)	 ctx->Driver.ProgramStringNotify( ctx, target, &prog->Base );   }   else {      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramStringARB(target)");      return;   }}/** * Set a program env parameter register. * \note Called from the GL API dispatcher. * Note, this function is also used by the GL_NV_vertex_program extension * (alias to ProgramParameterdNV) */void GLAPIENTRY_mesa_ProgramEnvParameter4dARB(GLenum target, GLuint index,                               GLdouble x, GLdouble y, GLdouble z, GLdouble w){   _mesa_ProgramEnvParameter4fARB(target, index, (GLfloat) x, (GLfloat) y, 		                  (GLfloat) z, (GLfloat) w);}/** * Set a program env parameter register. * \note Called from the GL API dispatcher. * Note, this function is also used by the GL_NV_vertex_program extension * (alias to ProgramParameterdvNV) */void GLAPIENTRY_mesa_ProgramEnvParameter4dvARB(GLenum target, GLuint index,                                const GLdouble *params){   _mesa_ProgramEnvParameter4fARB(target, index, (GLfloat) params[0], 	                          (GLfloat) params[1], (GLfloat) params[2], 				  (GLfloat) params[3]);}/** * Set a program env parameter register. * \note Called from the GL API dispatcher. * Note, this function is also used by the GL_NV_vertex_program extension * (alias to ProgramParameterfNV) */void GLAPIENTRY_mesa_ProgramEnvParameter4fARB(GLenum target, GLuint index,                               GLfloat x, GLfloat y, GLfloat z, GLfloat w){   GET_CURRENT_CONTEXT(ctx);   ASSERT_OUTSIDE_BEGIN_END(ctx);   FLUSH_VERTICES(ctx, _NEW_PROGRAM);   if (target == GL_FRAGMENT_PROGRAM_ARB       && ctx->Extensions.ARB_fragment_program) {      if (index >= ctx->Const.FragmentProgram.MaxEnvParams) {         _mesa_error(ctx, GL_INVALID_VALUE, "glProgramEnvParameter(index)");         return;      }      ASSIGN_4V(ctx->FragmentProgram.Parameters[index], x, y, z, w);   }   else if (target == GL_VERTEX_PROGRAM_ARB /* == GL_VERTEX_PROGRAM_NV */       && (ctx->Extensions.ARB_vertex_program || ctx->Extensions.NV_vertex_program)) {      if (index >= ctx->Const.VertexProgram.MaxEnvParams) {         _mesa_error(ctx, GL_INVALID_VALUE, "glProgramEnvParameter(index)");         return;      }      ASSIGN_4V(ctx->VertexProgram.Parameters[index], x, y, z, w);   }   else {      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramEnvParameter(target)");      return;   }}/** * Set a program env parameter register. * \note Called from the GL API dispatcher. * Note, this function is also used by the GL_NV_vertex_program extension * (alias to ProgramParameterfvNV) */void GLAPIENTRY_mesa_ProgramEnvParameter4fvARB(GLenum target, GLuint index,                                   const GLfloat *params){   _mesa_ProgramEnvParameter4fARB(target, index, params[0], params[1],                                  params[2], params[3]);}void GLAPIENTRY_mesa_ProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count,				 const GLfloat *params){   GET_CURRENT_CONTEXT(ctx);   GLint i;   GLfloat * dest;   ASSERT_OUTSIDE_BEGIN_END(ctx);   FLUSH_VERTICES(ctx, _NEW_PROGRAM);   if (count <= 0) {      _mesa_error(ctx, GL_INVALID_VALUE, "glProgramEnvParameters4fv(count)");   }   if (target == GL_FRAGMENT_PROGRAM_ARB       && ctx->Extensions.ARB_fragment_program) {      if ((index + count) > ctx->Const.FragmentProgram.MaxEnvParams) {         _mesa_error(ctx, GL_INVALID_VALUE, "glProgramEnvParameters4fv(index + count)");         return;      }      dest = ctx->FragmentProgram.Parameters[index];   }   else if (target == GL_VERTEX_PROGRAM_ARB       && ctx->Extensions.ARB_vertex_program) {      if ((index + count) > ctx->Const.VertexProgram.MaxEnvParams) {         _mesa_error(ctx, GL_INVALID_VALUE, "glProgramEnvParameters4fv(index + count)");         return;      }      dest = ctx->VertexProgram.Parameters[index];   }   else {      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramEnvParameters4fv(target)");      return;   }   for ( i = 0 ; i < count ; i++ ) {      COPY_4V(dest, params);      params += 4;      dest += 4;   }}void GLAPIENTRY_mesa_GetProgramEnvParameterdvARB(GLenum target, GLuint index,                                  GLdouble *params){   GET_CURRENT_CONTEXT(ctx);   GLfloat fparams[4];   _mesa_GetProgramEnvParameterfvARB(target, index, fparams);   if (ctx->ErrorValue == GL_NO_ERROR) {      params[0] = fparams[0];      params[1] = fparams[1];      params[2] = fparams[2];      params[3] = fparams[3];   }}void GLAPIENTRY_mesa_GetProgramEnvParameterfvARB(GLenum target, GLuint index,                                   GLfloat *params){   GET_CURRENT_CONTEXT(ctx);   FLUSH_VERTICES(ctx, _NEW_PROGRAM);   if (!ctx->_CurrentProgram)      ASSERT_OUTSIDE_BEGIN_END(ctx);   if (target == GL_FRAGMENT_PROGRAM_ARB       && ctx->Extensions.ARB_fragment_program) {      if (index >= ctx->Const.FragmentProgram.MaxEnvParams) {         _mesa_error(ctx, GL_INVALID_VALUE, "glGetProgramEnvParameter(index)");         return;      }      COPY_4V(params, ctx->FragmentProgram.Parameters[index]);   }   else if (target == GL_VERTEX_PROGRAM_ARB       && ctx->Extensions.ARB_vertex_program) {      if (index >= ctx->Const.VertexProgram.MaxEnvParams) {         _mesa_error(ctx, GL_INVALID_VALUE, "glGetProgramEnvParameter(index)");         return;      }      COPY_4V(params, ctx->VertexProgram.Parameters[index]);   }   else {      _mesa_error(ctx, GL_INVALID_ENUM, "glGetProgramEnvParameter(target)");      return;   }}/** * Note, this function is also used by the GL_NV_fragment_program extension. */void GLAPIENTRY_mesa_ProgramLocalParameter4fARB(GLenum target, GLuint index,                                 GLfloat x, GLfloat y, GLfloat z, GLfloat w){   GET_CURRENT_CONTEXT(ctx);   struct gl_program *prog;   ASSERT_OUTSIDE_BEGIN_END(ctx);   FLUSH_VERTICES(ctx, _NEW_PROGRAM);   if ((target == GL_FRAGMENT_PROGRAM_NV        && ctx->Extensions.NV_fragment_program) ||       (target == GL_FRAGMENT_PROGRAM_ARB        && ctx->Extensions.ARB_fragment_program)) {      if (index >= ctx->Const.FragmentProgram.MaxLocalParams) {         _mesa_error(ctx, GL_INVALID_VALUE, "glProgramLocalParameterARB");         return;      }      prog = &(ctx->FragmentProgram.Current->Base);   }   else if (target == GL_VERTEX_PROGRAM_ARB            && ctx->Extensions.ARB_vertex_program) {      if (index >= ctx->Const.VertexProgram.MaxLocalParams) {         _mesa_error(ctx, GL_INVALID_VALUE, "glProgramLocalParameterARB");         return;      }      prog = &(ctx->VertexProgram.Current->Base);   }   else {      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramLocalParameterARB");      return;   }   ASSERT(index < MAX_PROGRAM_LOCAL_PARAMS);   prog->LocalParams[index][0] = x;   prog->LocalParams[index][1] = y;   prog->LocalParams[index][2] = z;   prog->LocalParams[index][3] = w;}/** * Note, this function is also used by the GL_NV_fragment_program extension. */void GLAPIENTRY_mesa_ProgramLocalParameter4fvARB(GLenum target, GLuint index,                                  const GLfloat *params){   _mesa_ProgramLocalParameter4fARB(target, index, params[0], params[1],                                    params[2], params[3]);}void GLAPIENTRY_mesa_ProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count,				   const GLfloat *params)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -