diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2017-11-29 14:47:09 -0500 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2017-11-29 14:47:09 -0500 |
commit | e3a2c5e3217ae74a0277f2e6d4e1e708fe398a1c (patch) | |
tree | f912ed486a465f5cc0aee5c73c9cb70c195e8c4d /indra/llrender/llvertexbuffer.cpp | |
parent | 1693ccba58eef676df1f91e50627545ac35bb819 (diff) | |
parent | bf98e092e53ed228b3cb50fe816058c5a7817329 (diff) |
DRTVWR-418: Merge from latest viewer-release
Diffstat (limited to 'indra/llrender/llvertexbuffer.cpp')
-rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 0b4427a31a..5048799854 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -1471,13 +1471,22 @@ 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], (void*) mOffsets[i]); + glVertexAttribIPointer(i, attrib_size[i], attrib_type[i], sTypeSize[i], (const GLvoid*) mOffsets[i]); } #endif } else { - glVertexAttribPointerARB(i, attrib_size[i], attrib_type[i], attrib_normalized[i], sTypeSize[i], (void*) mOffsets[i]); + // nat 2016-12-16: With 64-bit clang compile, the compiler + // produces an error if we simply cast mOffsets[i] -- an S32 + // -- to (GLvoid *), the type of the parameter. It correctly + // points out that there's no way an S32 could fit a real + // pointer value. Ruslan asserts that in this case the last + // param is interpreted as an array data offset within the VBO + // 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])); } } else |