mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Introjucer: fixed a problem when creating new exporters. Added better error reporting for GL shader compilation. Linux http fix.
This commit is contained in:
parent
a6069d1c02
commit
75e9f9102e
5 changed files with 45 additions and 18 deletions
|
|
@ -67,11 +67,11 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int
|
|||
{
|
||||
case 0: exp = new XCodeProjectExporter (project, ValueTree (XCodeProjectExporter ::getValueTreeTypeName (false)), false); break;
|
||||
case 1: exp = new XCodeProjectExporter (project, ValueTree (XCodeProjectExporter ::getValueTreeTypeName (true)), true); break;
|
||||
case 3: exp = new MSVCProjectExporterVC2005 (project, ValueTree (MSVCProjectExporterVC2005::getValueTreeTypeName())); break;
|
||||
case 4: exp = new MSVCProjectExporterVC2008 (project, ValueTree (MSVCProjectExporterVC2008::getValueTreeTypeName())); break;
|
||||
case 5: exp = new MSVCProjectExporterVC2010 (project, ValueTree (MSVCProjectExporterVC2010::getValueTreeTypeName())); break;
|
||||
case 6: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break;
|
||||
case 7: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break;
|
||||
case 2: exp = new MSVCProjectExporterVC2005 (project, ValueTree (MSVCProjectExporterVC2005::getValueTreeTypeName())); break;
|
||||
case 3: exp = new MSVCProjectExporterVC2008 (project, ValueTree (MSVCProjectExporterVC2008::getValueTreeTypeName())); break;
|
||||
case 4: exp = new MSVCProjectExporterVC2010 (project, ValueTree (MSVCProjectExporterVC2010::getValueTreeTypeName())); break;
|
||||
case 5: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break;
|
||||
case 6: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break;
|
||||
default: jassertfalse; return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -416,7 +416,7 @@ private:
|
|||
}
|
||||
else
|
||||
{
|
||||
port = 0; // indicates the default port
|
||||
port = 80;
|
||||
|
||||
if (nextSlash >= 0)
|
||||
host = url.substring (7, nextSlash);
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@
|
|||
USE_FUNCTION (glUseProgram, void, (GLuint p1), (p1))\
|
||||
USE_FUNCTION (glGetShaderiv, void, (GLuint p1, GLenum p2, GLint* p3), (p1, p2, p3))\
|
||||
USE_FUNCTION (glGetShaderInfoLog, void, (GLuint p1, GLsizei p2, GLsizei* p3, GLchar* p4), (p1, p2, p3, p4))\
|
||||
USE_FUNCTION (glGetProgramInfoLog, void, (GLuint p1, GLsizei p2, GLsizei* p3, GLchar* p4), (p1, p2, p3, p4))\
|
||||
USE_FUNCTION (glGetProgramiv, void, (GLuint p1, GLenum p2, GLint* p3), (p1, p2, p3))\
|
||||
USE_FUNCTION (glGetUniformLocation, GLint, (GLuint p1, const GLchar* p2), (p1, p2))\
|
||||
USE_FUNCTION (glGetAttribLocation, GLint, (GLuint p1, const GLchar* p2), (p1, p2))\
|
||||
|
|
|
|||
|
|
@ -50,14 +50,13 @@ double OpenGLShaderProgram::getLanguageVersion()
|
|||
#endif
|
||||
}
|
||||
|
||||
void OpenGLShaderProgram::addShader (const char* const code, GLenum type)
|
||||
bool OpenGLShaderProgram::addShader (const char* const code, GLenum type)
|
||||
{
|
||||
GLuint shaderID = context.extensions.glCreateShader (type);
|
||||
context.extensions.glShaderSource (shaderID, 1, (const GLchar**) &code, nullptr);
|
||||
context.extensions.glCompileShader (shaderID);
|
||||
|
||||
#if JUCE_DEBUG
|
||||
GLint status = 0;
|
||||
GLint status = GL_FALSE;
|
||||
context.extensions.glGetShaderiv (shaderID, GL_COMPILE_STATUS, &status);
|
||||
|
||||
if (status == GL_FALSE)
|
||||
|
|
@ -65,24 +64,42 @@ void OpenGLShaderProgram::addShader (const char* const code, GLenum type)
|
|||
GLchar infoLog [16384];
|
||||
GLsizei infologLength = 0;
|
||||
context.extensions.glGetShaderInfoLog (shaderID, sizeof (infoLog), &infologLength, infoLog);
|
||||
DBG (String (infoLog, infologLength));
|
||||
errorLog = String (infoLog, infologLength);
|
||||
|
||||
#if JUCE_DEBUG
|
||||
DBG (errorLog);
|
||||
jassertfalse;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
context.extensions.glAttachShader (programID, shaderID);
|
||||
context.extensions.glDeleteShader (shaderID);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OpenGLShaderProgram::link() noexcept
|
||||
bool OpenGLShaderProgram::link() noexcept
|
||||
{
|
||||
context.extensions.glLinkProgram (programID);
|
||||
|
||||
#if JUCE_DEBUG
|
||||
GLint status = 0;
|
||||
GLint status = GL_FALSE;
|
||||
context.extensions.glGetProgramiv (programID, GL_LINK_STATUS, &status);
|
||||
jassert (status != GL_FALSE);
|
||||
#endif
|
||||
|
||||
if (status == GL_FALSE)
|
||||
{
|
||||
GLchar infoLog [16384];
|
||||
GLsizei infologLength = 0;
|
||||
context.extensions.glGetProgramInfoLog (programID, sizeof (infoLog), &infologLength, infoLog);
|
||||
errorLog = String (infoLog, infologLength);
|
||||
|
||||
#if JUCE_DEBUG
|
||||
DBG (errorLog);
|
||||
jassertfalse;
|
||||
#endif
|
||||
}
|
||||
|
||||
return status != GL_FALSE;
|
||||
}
|
||||
|
||||
void OpenGLShaderProgram::use() const noexcept
|
||||
|
|
|
|||
|
|
@ -56,14 +56,22 @@ public:
|
|||
fails to compile correctly.
|
||||
|
||||
The shaderType parameter could be GL_VERTEX_SHADER, GL_FRAGMENT_SHADER, etc.
|
||||
|
||||
@returns true if the shader compiled successfully. If not, you can call
|
||||
getLastError() to find out what happened.
|
||||
*/
|
||||
void addShader (const char* const shaderSourceCode, GLenum shaderType);
|
||||
bool addShader (const char* const shaderSourceCode, GLenum shaderType);
|
||||
|
||||
/** Links all the compiled shaders into a usable program.
|
||||
If your app is built in debug mode, this method will assert if the program
|
||||
fails to link correctly.
|
||||
@returns true if the program linked successfully. If not, you can call
|
||||
getLastError() to find out what happened.
|
||||
*/
|
||||
void link() noexcept;
|
||||
bool link() noexcept;
|
||||
|
||||
/** Get the output for the last shader compilation or link that failed. */
|
||||
const String& getLastError() const noexcept { return errorLog; }
|
||||
|
||||
/** Selects this program into the current context. */
|
||||
void use() const noexcept;
|
||||
|
|
@ -132,6 +140,7 @@ public:
|
|||
|
||||
private:
|
||||
const OpenGLContext& context;
|
||||
String errorLog;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGLShaderProgram);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue