提交 1272f453 编写于 作者: S Simon Fels

Correct object data handling from shader programs

上级 242bfca0
......@@ -2082,7 +2082,8 @@ static void s_unUseCurrentProgram() {
if (!localCurrentProgram) return;
ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,localCurrentProgram);
SET_ERROR_IF(!objData.Ptr() || objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
if (!objData) return;
SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
ProgramData* programData = (ProgramData*)objData.Ptr();
programData->setInUse(false);
if (programData->getDeleteStatus()) { glDeleteProgram(localCurrentProgram); }
......@@ -2094,7 +2095,7 @@ GL_APICALL void GL_APIENTRY glUseProgram(GLuint program){
const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
SET_ERROR_IF(program!=0 && globalProgramName==0,GL_INVALID_VALUE);
ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
SET_ERROR_IF(!objData.Ptr() || (objData.Ptr()->getDataType()!=PROGRAM_DATA),GL_INVALID_OPERATION);
SET_ERROR_IF(objData.Ptr() && (objData.Ptr()->getDataType()!=PROGRAM_DATA),GL_INVALID_OPERATION);
s_unUseCurrentProgram();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册