scan line using cuda

  • Upload
    akhil

  • View
    229

  • Download
    5

Embed Size (px)

DESCRIPTION

cuda and opengl

Citation preview

#include#include#define max 500#define size 10float x[size]={0},y[size]={0};int n=0,pix[max][max]={0};void draw_pixel(int p,int q){ glColor3f(0.0,1.0,0.0); glPointSize(1.0); glBegin(GL_POINTS); glVertex2i(p,q); glEnd();}__global__ void edgedetectx(float x1,float y1,float x2,float y2,int *dow,int *up){ __shared__ float y,my;if(threadIdx.x==0){if(x1==x2)my=y2-y1;elsemy=(y2-y1)/(x2-x1);y=y1;}__syncthreads(); if(y(float)up[threadIdx.x+x1]) up[threadIdx.x+x1]=(int)y; y+=my;}__global__ void edgedetecty(float x1,float y1,float x2,float y2,int *le,int *re){ __shared__ float x,mx;if(threadIdx.x==0){if(y1==y2)mx=x2-x1;elsemx=(x2-x1)/(y2-y1);x=x1;}__syncthreads(); if(x(float)re[threadIdx.x+y1]) re[threadIdx.x+y1]=(int)x; x+=mx;}__global__ void scanfillx(){ __shared__ int upy0[max],dowy0[max];int i,j,delay;if(threadIdx.x==0){for(i=0;ix[threadIdx.x+1]){edgedetectx>(x[threadIdx.x+1],y[threadIdx.x+1],x[threadIdx.x],y[threadIdx.x],dowy0,upy0);}else{edgedetectx>(x[threadIdx.x],y[threadIdx.x],x[threadIdx.x+1],y[threadIdx.x+1],dowy0,upy0);}__syncthreads();if(threadIdx.x==0){ edgedetectx(x[n-1],y[n-1],x[0],y[0],dowy0,upy0); for(j=0;j