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:
parent
a66691b061
commit
4f0c2c0fb8
3 changed files with 22 additions and 8 deletions
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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))\
|
||||
|
|
|
|||
|
|
@ -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&);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue