diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2014-09-02 17:57:22 +0400 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2014-09-02 17:57:38 +0400 |
commit | 3733eb6340ba34dc68022f58de731c8ec5fb274b (patch) | |
tree | d6e2483e59fafaf31fe5293e991401711561a335 /source/blender/gpu/intern/gpu_buffers.c | |
parent | f6b4b1296125d43e94968709bc52d5f7a062734e (diff) |
Fix T41682.
Bring back shading in texture painting.
This works now but it uses 3 texture units instead of two. Most GPUs of
DirectX 8 (OpenGL 1.4 should cover that) functionality even should have
those, but some old GPUs might not work with that. In any case, I hope
we will be moving to OpenGL 2.1 requirement soon anyway where 4-8
texture units are usually the norm.
Diffstat (limited to 'source/blender/gpu/intern/gpu_buffers.c')
-rw-r--r-- | source/blender/gpu/intern/gpu_buffers.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 698e72a6b35..5d2c9cd3a90 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -63,12 +63,12 @@ #include "bmesh.h" typedef enum { - GPU_BUFFER_VERTEX_STATE = 1, - GPU_BUFFER_NORMAL_STATE = 2, - GPU_BUFFER_TEXCOORD_UNIT_0_STATE = 4, - GPU_BUFFER_TEXCOORD_UNIT_1_STATE = 8, - GPU_BUFFER_COLOR_STATE = 16, - GPU_BUFFER_ELEMENT_STATE = 32, + GPU_BUFFER_VERTEX_STATE = (1 << 0), + GPU_BUFFER_NORMAL_STATE = (1 << 1), + GPU_BUFFER_TEXCOORD_UNIT_0_STATE = (1 << 2), + GPU_BUFFER_TEXCOORD_UNIT_2_STATE = (1 << 3), + GPU_BUFFER_COLOR_STATE = (1 << 4), + GPU_BUFFER_ELEMENT_STATE = (1 << 5), } GPUBufferState; #define MAX_GPU_ATTRIB_DATA 32 @@ -1159,20 +1159,20 @@ void GPU_texpaint_uv_setup(DerivedMesh *dm) if (useVBOs) { glBindBufferARB(GL_ARRAY_BUFFER_ARB, dm->drawObject->uv->id); glTexCoordPointer(2, GL_FLOAT, 4 * sizeof(float), 0); - glClientActiveTexture(GL_TEXTURE1); + glClientActiveTexture(GL_TEXTURE2); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(2, GL_FLOAT, 4 * sizeof(float), BUFFER_OFFSET(2 * sizeof(float))); glClientActiveTexture(GL_TEXTURE0); } else { glTexCoordPointer(2, GL_FLOAT, 4 * sizeof(float), dm->drawObject->uv->pointer); - glClientActiveTexture(GL_TEXTURE1); + glClientActiveTexture(GL_TEXTURE2); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(2, GL_FLOAT, 4 * sizeof(float), (char *)dm->drawObject->uv->pointer + 2 * sizeof(float)); glClientActiveTexture(GL_TEXTURE0); } - GLStates |= GPU_BUFFER_TEXCOORD_UNIT_0_STATE | GPU_BUFFER_TEXCOORD_UNIT_1_STATE; + GLStates |= GPU_BUFFER_TEXCOORD_UNIT_0_STATE | GPU_BUFFER_TEXCOORD_UNIT_2_STATE; } @@ -1335,8 +1335,8 @@ void GPU_buffer_unbind(void) glDisableClientState(GL_NORMAL_ARRAY); if (GLStates & GPU_BUFFER_TEXCOORD_UNIT_0_STATE) glDisableClientState(GL_TEXTURE_COORD_ARRAY); - if (GLStates & GPU_BUFFER_TEXCOORD_UNIT_1_STATE) { - glClientActiveTexture(GL_TEXTURE1); + if (GLStates & GPU_BUFFER_TEXCOORD_UNIT_2_STATE) { + glClientActiveTexture(GL_TEXTURE2); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glClientActiveTexture(GL_TEXTURE0); } @@ -1348,7 +1348,7 @@ void GPU_buffer_unbind(void) } } GLStates &= ~(GPU_BUFFER_VERTEX_STATE | GPU_BUFFER_NORMAL_STATE | - GPU_BUFFER_TEXCOORD_UNIT_0_STATE | GPU_BUFFER_TEXCOORD_UNIT_1_STATE | + GPU_BUFFER_TEXCOORD_UNIT_0_STATE | GPU_BUFFER_TEXCOORD_UNIT_2_STATE | GPU_BUFFER_COLOR_STATE | GPU_BUFFER_ELEMENT_STATE); for (i = 0; i < MAX_GPU_ATTRIB_DATA; i++) { |