Commit 376e1064 by alokp@chromium.org

Added support for loops.

Review URL: http://codereview.appspot.com/802047 git-svn-id: https://angleproject.googlecode.com/svn/trunk@91 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 3d270782
...@@ -467,8 +467,49 @@ bool TOutputGLSL::visitAggregate(Visit visit, TIntermAggregate* node) ...@@ -467,8 +467,49 @@ bool TOutputGLSL::visitAggregate(Visit visit, TIntermAggregate* node)
bool TOutputGLSL::visitLoop(Visit visit, TIntermLoop* node) bool TOutputGLSL::visitLoop(Visit visit, TIntermLoop* node)
{ {
UNIMPLEMENTED(); TInfoSinkBase& out = objSink();
return true;
// Loop header.
if (node->testFirst()) // for loop
{
out << "for (";
if (node->getInit())
node->getInit()->traverse(this);
out << "; ";
ASSERT(node->getTest() != NULL);
node->getTest()->traverse(this);
out << "; ";
if (node->getTerminal())
node->getTerminal()->traverse(this);
out << ") {\n";
}
else // do-while loop
{
out << "do {\n";
}
// Loop body.
if (node->getBody())
node->getBody()->traverse(this);
// Loop footer.
if (node->testFirst()) // for loop
{
out << "}\n";
}
else // do-while loop
{
out << "} while (";
ASSERT(node->getTest() != NULL);
node->getTest()->traverse(this);
out << ");\n";
}
// No need to visit children. They have been already processed in
// this function.
return false;
} }
bool TOutputGLSL::visitBranch(Visit visit, TIntermBranch* node) bool TOutputGLSL::visitBranch(Visit visit, TIntermBranch* node)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment