<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Style frage. bzw. wie ohne Macro?]]></title><description><![CDATA[<p>Könnte man das hier irgendwie genau so kurz und übersichtlich ohne ein Macro hinbekommen? Mir ist leider nichts eingefallen.</p>
<pre><code>#define setUniformVectorMacro(TYPE, TYPE_BASE, GL_UNIFORM_FUNCTION)\
    void glsl::setUniform(GLint uniformLocation, const TYPE &amp;value, int count)\
    {\
        GL_UNIFORM_FUNCTION(uniformLocation, count, reinterpret_cast&lt;const TYPE_BASE*&gt;(&amp;value));\
    }

    setUniformVectorMacro(GLfloat,    GLfloat,  glUniform1fv)
    setUniformVectorMacro(GLdouble,   GLdouble, glUniform1dv)
    setUniformVectorMacro(GLint,      GLint,    glUniform1iv)
    setUniformVectorMacro(GLuint,     GLuint,   glUniform1uiv)

    setUniformVectorMacro(glm::vec2,  GLfloat,  glUniform2fv)
    setUniformVectorMacro(glm::dvec2, GLdouble, glUniform2dv)
    setUniformVectorMacro(glm::ivec2, GLint,    glUniform2iv)
    setUniformVectorMacro(glm::uvec2, GLuint,   glUniform2uiv)

    setUniformVectorMacro(glm::vec3,  GLfloat,  glUniform3fv)
    setUniformVectorMacro(glm::dvec3, GLdouble, glUniform3dv)
    setUniformVectorMacro(glm::ivec3, GLint,    glUniform3iv)
    setUniformVectorMacro(glm::uvec3, GLuint,   glUniform3uiv)

    setUniformVectorMacro(glm::vec4,  GLfloat,  glUniform4fv)
    setUniformVectorMacro(glm::dvec4, GLdouble, glUniform4dv)
    setUniformVectorMacro(glm::ivec4, GLint,    glUniform4iv)
    setUniformVectorMacro(glm::uvec4, GLuint,   glUniform4uiv)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/318613/style-frage-bzw-wie-ohne-macro</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 05:37:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/318613.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Jul 2013 13:57:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Style frage. bzw. wie ohne Macro? on Fri, 19 Jul 2013 13:57:23 GMT]]></title><description><![CDATA[<p>Könnte man das hier irgendwie genau so kurz und übersichtlich ohne ein Macro hinbekommen? Mir ist leider nichts eingefallen.</p>
<pre><code>#define setUniformVectorMacro(TYPE, TYPE_BASE, GL_UNIFORM_FUNCTION)\
    void glsl::setUniform(GLint uniformLocation, const TYPE &amp;value, int count)\
    {\
        GL_UNIFORM_FUNCTION(uniformLocation, count, reinterpret_cast&lt;const TYPE_BASE*&gt;(&amp;value));\
    }

    setUniformVectorMacro(GLfloat,    GLfloat,  glUniform1fv)
    setUniformVectorMacro(GLdouble,   GLdouble, glUniform1dv)
    setUniformVectorMacro(GLint,      GLint,    glUniform1iv)
    setUniformVectorMacro(GLuint,     GLuint,   glUniform1uiv)

    setUniformVectorMacro(glm::vec2,  GLfloat,  glUniform2fv)
    setUniformVectorMacro(glm::dvec2, GLdouble, glUniform2dv)
    setUniformVectorMacro(glm::ivec2, GLint,    glUniform2iv)
    setUniformVectorMacro(glm::uvec2, GLuint,   glUniform2uiv)

    setUniformVectorMacro(glm::vec3,  GLfloat,  glUniform3fv)
    setUniformVectorMacro(glm::dvec3, GLdouble, glUniform3dv)
    setUniformVectorMacro(glm::ivec3, GLint,    glUniform3iv)
    setUniformVectorMacro(glm::uvec3, GLuint,   glUniform3uiv)

    setUniformVectorMacro(glm::vec4,  GLfloat,  glUniform4fv)
    setUniformVectorMacro(glm::dvec4, GLdouble, glUniform4dv)
    setUniformVectorMacro(glm::ivec4, GLint,    glUniform4iv)
    setUniformVectorMacro(glm::uvec4, GLuint,   glUniform4uiv)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2339930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2339930</guid><dc:creator><![CDATA[Osbios]]></dc:creator><pubDate>Fri, 19 Jul 2013 13:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Style frage. bzw. wie ohne Macro? on Fri, 19 Jul 2013 14:24:04 GMT]]></title><description><![CDATA[<p>Bei deiner Casterei blick ich nicht ganz durch, ob das nun const oder nicht const sein soll, aber so in dieser Richtung könnte das aussehen:</p>
<pre><code>template &lt;typename Type, typename BaseType, void (*UniformFunction) (int, int, const BaseType*) &gt;
void setUniform(int uniformLocation, const Type&amp; value, int count)
{
  UniformFunction(uniformLocation, count, reinterpret_cast&lt;const BaseType*&gt;(&amp;value));
}

void test(int, int, const int*);

int main()
{
  setUniform&lt;int,int, test&gt;(1,2,3);
}
</code></pre>
<p>Ist die Instanzierung bei Bedarf ein Problem? Falls ja, kann man die Templates natürlich nochmal explizit im Voraus instanzieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2339940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2339940</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 19 Jul 2013 14:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Style frage. bzw. wie ohne Macro? on Fri, 19 Jul 2013 14:41:03 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: dann muss allerdings bei jedem Aufruf explizit UniformFunction angegeben werden, was den Sinn des Wrappers in Frage stellt.</p>
<p>Eine Lösung ohne Makro ist möglich, dürfte sich hier aber kaum lohnen (das könnte ggf. anders aussehen, wenn noch viel mehr solche Stellen auftauchen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2339946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2339946</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 19 Jul 2013 14:41:03 GMT</pubDate></item><item><title><![CDATA[Reply to Style frage. bzw. wie ohne Macro? on Fri, 19 Jul 2013 17:25:03 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: dann muss allerdings bei jedem Aufruf explizit UniformFunction angegeben werden, was den Sinn des Wrappers in Frage stellt.</p>
</blockquote>
<p>was genauso auch in der makro variante der fall ist oder ich habe dich missverstanden.</p>
<p>Edit: ja habe es missverstanden... Per makro werden entsprechende Wrapper methoden erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2339979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2339979</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Fri, 19 Jul 2013 17:25:03 GMT</pubDate></item></channel></rss>