Browse Source

More openGL shader fixes. VST fix for Wavelab.

tags/2021-05-28
jules 13 years ago
parent
commit
4f0c2c0fb8
3 changed files with 22 additions and 8 deletions
  1. +8
    -2
      modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp
  2. +2
    -1
      modules/juce_opengl/native/juce_OpenGLExtensions.h
  3. +12
    -5
      modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp

+ 8
- 2
modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp 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();


+ 2
- 1
modules/juce_opengl/native/juce_OpenGLExtensions.h 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))\


+ 12
- 5
modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp 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&);


Loading…
Cancel
Save