PDA

View Full Version : Very Basic Question



bmac
12-08-2009, 10:54 AM
Hi all,
I'm very new to OpenCL and I'm trying to figure out how I'd write a (very) simple function. Essentially I need to be able to alter the values of the arguments to a function without returning them. Is there an equivalent to the inout parameter in GLSL?

In C it would be

void ContourTree::switchPoints(Point& a, Point& b)
{
Point switch_point = a;
a = b;
b = switch_point;
}

In GLSL it looks like

void switchPoints(inout vec3 a, inout vec3 b)
{
vec3 switch_pt = a;
a = b;
b = switch_pt;
}

I thought that this would work, but it doesn't seem to for some reason:


void
test( float* a,
float* b)
{
float* temp = a;
a = b;
b = temp;
}

wherein I call it like so
test(&a, &b); I'm sure I'm missing something very basic here.

ibbles
12-10-2009, 12:27 AM
Hi all,
I'm very new to OpenCL and I'm trying to figure out how I'd write a (very) simple function. Essentially I need to be able to alter the values of the arguments to a function without returning them. Is there an equivalent to the inout parameter in GLSL?

I thought that this would work, but it doesn't seem to for some reason:


void
test( float* a,
float* b)
{
float* temp = a;
a = b;
b = temp;
}


It seems to me that you are swapping pointers instead of the values pointed to. Try



void
test( float* a,
float* b)
{
float temp = *a;
*a = *b;
*b = temp;
}

bmac
12-10-2009, 06:43 AM
That's it. Thank you very much.