1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

More openGL shader fixes. VST fix for Wavelab.

This commit is contained in:
jules 2012-01-31 19:16:44 +00:00
parent a66691b061
commit 4f0c2c0fb8
3 changed files with 22 additions and 8 deletions

View file

@ -188,6 +188,10 @@ namespace
mouseWheelHook = 0;
}
}
#if JUCE_WINDOWS
static bool messageThreadIsDefinitelyCorrect = false;
#endif
}
//==============================================================================
@ -315,6 +319,10 @@ public:
SharedMessageThread::deleteInstance();
#endif
shutdownJuce_GUI();
#if JUCE_WINDOWS
messageThreadIsDefinitelyCorrect = false;
#endif
}
}
@ -1320,8 +1328,6 @@ private:
{
if (getHostType().isWavelab() || getHostType().isCubaseBridged())
{
static bool messageThreadIsDefinitelyCorrect = false;
if (! messageThreadIsDefinitelyCorrect)
{
MessageManager::getInstance()->setCurrentThreadAsMessageThread();

View file

@ -69,7 +69,8 @@
USE_FUNCTION (glGetUniformLocation, GLint, (GLuint p1, const GLchar* p2), (p1, p2))\
USE_FUNCTION (glGetAttribLocation, GLint, (GLuint p1, const GLchar* p2), (p1, p2))\
USE_FUNCTION (glVertexAttribPointer, void, (GLuint p1, GLint p2, GLenum p3, GLboolean p4, GLsizei p5, const GLvoid* p6), (p1, p2, p3, p4, p5, p6))\
USE_FUNCTION (glEnableVertexAttribArray, void, (GLuint p1), (p1))\
USE_FUNCTION (glEnableVertexAttribArray, void, (GLuint p1), (p1))\
USE_FUNCTION (glDisableVertexAttribArray, void, (GLuint p1), (p1))\
USE_FUNCTION (glUniform1f, void, (GLint p1, GLfloat p2), (p1, p2))\
USE_FUNCTION (glUniform1i, void, (GLint p1, GLint p2), (p1, p2))\
USE_FUNCTION (glUniform2f, void, (GLint p1, GLfloat p2, GLfloat p3), (p1, p2, p3))\

View file

@ -267,6 +267,12 @@ public:
context.extensions.glEnableVertexAttribArray (colourAttribute.attributeID);
}
void unbindAttributes (OpenGLContext& context)
{
context.extensions.glDisableVertexAttribArray (positionAttribute.attributeID);
context.extensions.glDisableVertexAttribArray (colourAttribute.attributeID);
}
OpenGLShaderProgram::Attribute positionAttribute, colourAttribute;
private:
@ -514,8 +520,8 @@ public:
"uniform " JUCE_MEDIUMP " vec4 imageLimits;" \
JUCE_DECLARE_MATRIX_UNIFORM JUCE_DECLARE_VARYING_COLOUR JUCE_DECLARE_VARYING_PIXELPOS
#define JUCE_GET_IMAGE_PIXEL "texture2D (imageTexture, vec2 (texturePos.x, 1.0 - texturePos.y))"
#define JUCE_CLAMP_TEXTURE_COORD JUCE_HIGHP " vec2 texturePos = clamp (" JUCE_MATRIX_TIMES_FRAGCOORD ", imageLimits.xy, imageLimits.zw);"
#define JUCE_MOD_TEXTURE_COORD JUCE_HIGHP " vec2 texturePos = clamp (mod (" JUCE_MATRIX_TIMES_FRAGCOORD ", imageLimits.zw + imageLimits.xy), imageLimits.xy, imageLimits.zw);"
#define JUCE_CLAMP_TEXTURE_COORD JUCE_HIGHP " vec2 texturePos = clamp (" JUCE_MATRIX_TIMES_FRAGCOORD ", vec2 (0, 0), imageLimits.zw + imageLimits.xy);"
#define JUCE_MOD_TEXTURE_COORD JUCE_HIGHP " vec2 texturePos = clamp (mod (" JUCE_MATRIX_TIMES_FRAGCOORD ", imageLimits.zw + imageLimits.xy), vec2 (0, 0), imageLimits.zw + imageLimits.xy);"
struct ImageProgram : public ShaderBase
{
@ -1236,10 +1242,10 @@ struct StateHelpers
void setShader (const Rectangle<int>& bounds, ShaderQuadQueue& quadQueue, ShaderPrograms::ShaderBase& shader)
{
if (activeShader != &(shader.program))
if (activeShader != &shader)
{
quadQueue.flush();
activeShader = &(shader.program);
activeShader = &shader;
shader.program.use();
shader.bindAttributes (context);
@ -1263,6 +1269,7 @@ struct StateHelpers
if (activeShader != nullptr)
{
quadQueue.flush();
activeShader->unbindAttributes (context);
activeShader = nullptr;
context.extensions.glUseProgram (0);
}
@ -1273,7 +1280,7 @@ struct StateHelpers
bool canUseShaders;
private:
OpenGLShaderProgram* activeShader;
ShaderPrograms::ShaderBase* activeShader;
Rectangle<int> currentBounds;
CurrentShader& operator= (const CurrentShader&);