DRTVWR-476: Fix glVertexAttrib{IPointer,PointerARB}() OpenGL calls.
VS 2017 complains about the same thing that clang does: casting S32 to GLvoid* can't possibly produce a valid pointer value because S32 can't fit a whole 64-bit pointer. To appease it, not only must we use reinterpret_cast, but we must first cast S32 to intptr_t and then reinterpret_cast THAT.meow-7.2.2
parent
5c1e86dfdf
commit
cacc164e7a
|
|
@ -1471,7 +1471,12 @@ void LLVertexBuffer::setupVertexArray()
|
|||
//glVertexattribIPointer requires GLSL 1.30 or later
|
||||
if (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 30)
|
||||
{
|
||||
glVertexAttribIPointer(i, attrib_size[i], attrib_type[i], sTypeSize[i], (const GLvoid*) mOffsets[i]);
|
||||
// nat 2018-10-24: VS 2017 also notices the issue
|
||||
// described below, and warns even with reinterpret_cast.
|
||||
// Cast via intptr_t to make it painfully obvious to the
|
||||
// compiler that we're doing this intentionally.
|
||||
glVertexAttribIPointer(i, attrib_size[i], attrib_type[i], sTypeSize[i],
|
||||
reinterpret_cast<const GLvoid*>(intptr_t(mOffsets[i])));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
@ -1486,7 +1491,7 @@ void LLVertexBuffer::setupVertexArray()
|
|||
// rather than as an actual pointer, so it's okay.
|
||||
glVertexAttribPointerARB(i, attrib_size[i], attrib_type[i],
|
||||
attrib_normalized[i], sTypeSize[i],
|
||||
reinterpret_cast<GLvoid*>(mOffsets[i]));
|
||||
reinterpret_cast<GLvoid*>(intptr_t(mOffsets[i])));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue