void _stdcall display (void){
// glClearColor(1.0,0.0,1.0,1.0); //设置背景颜色
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); //设置背景颜色
glColor3f(1.0,1.0,0.0);//设置绘制图形所用颜色 //设置图形转换信息
glLoadIdentity(); //清空矩阵
glTranslatef(0.0,-1.0,-5.0); //把圆柱体向Y负方向平移1单位,向Z负方向平移5单位
glRotatef(15.0,1.0,0.0,0.0); //把圆柱体绕X轴旋转15°
//具体绘制图形
for(int i=0;i<N;i++)
drawSurface(&bottomVertex[i][0],&bottomVertex[i+1][0],&topVertex[i+1][0],&topVertex[i][0]);
//绘制最后一个缺口
drawSurface(&bottomVertex[N-1][0],&bottomVertex[0][0],&topVertex[0][0],&topVertex[N-1][0]);
glFlush();//结束图形绘制的顶点给定,并最终输出至显示器完成图形的显示
}
void drawSurface(double *v1,double *v2,double *v3,double *v4)
{
glBegin(GL_POLYGON);//绘制侧面
glNormal3dv(v1);
glVertex3dv(v1); glNormal3dv(v2);
glVertex3dv(v2); glNormal3dv(v2);
glVertex3dv(v3); glNormal3dv(v1);
glVertex3dv(v4);
glEnd();
glBegin(GL_TRIANGLES);//绘制上底
glNormal3d(0.0,1.0,0.0);//法线向上
glVertex3dv(v3); glNormal3d(0.0,1.0,0.0);
glVertex3dv(O2);
glNormal3d(0.0,1.0,0.0);
glVertex3dv(v4);
glEnd();
//因为下底面不接受光照,所以完全可以不绘制下底以加快速度
/* glBegin(GL_TRIANGLES);//绘制下底
glNormal3d(0.0,-1.0,0.0);//法线向下
glVertex3dv(v2); glNormal3d(0.0,-1.0,0.0);
glVertex3dv(O1);
glNormal3d(0.0,-1.0,0.0);
glVertex3dv(v1);
glEnd();
*/
}
// glClearColor(1.0,0.0,1.0,1.0); //设置背景颜色
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); //设置背景颜色
glColor3f(1.0,1.0,0.0);//设置绘制图形所用颜色 //设置图形转换信息
glLoadIdentity(); //清空矩阵
glTranslatef(0.0,-1.0,-5.0); //把圆柱体向Y负方向平移1单位,向Z负方向平移5单位
glRotatef(15.0,1.0,0.0,0.0); //把圆柱体绕X轴旋转15°
//具体绘制图形
for(int i=0;i<N;i++)
drawSurface(&bottomVertex[i][0],&bottomVertex[i+1][0],&topVertex[i+1][0],&topVertex[i][0]);
//绘制最后一个缺口
drawSurface(&bottomVertex[N-1][0],&bottomVertex[0][0],&topVertex[0][0],&topVertex[N-1][0]);
glFlush();//结束图形绘制的顶点给定,并最终输出至显示器完成图形的显示
}
void drawSurface(double *v1,double *v2,double *v3,double *v4)
{
glBegin(GL_POLYGON);//绘制侧面
glNormal3dv(v1);
glVertex3dv(v1); glNormal3dv(v2);
glVertex3dv(v2); glNormal3dv(v2);
glVertex3dv(v3); glNormal3dv(v1);
glVertex3dv(v4);
glEnd();
glBegin(GL_TRIANGLES);//绘制上底
glNormal3d(0.0,1.0,0.0);//法线向上
glVertex3dv(v3); glNormal3d(0.0,1.0,0.0);
glVertex3dv(O2);
glNormal3d(0.0,1.0,0.0);
glVertex3dv(v4);
glEnd();
//因为下底面不接受光照,所以完全可以不绘制下底以加快速度
/* glBegin(GL_TRIANGLES);//绘制下底
glNormal3d(0.0,-1.0,0.0);//法线向下
glVertex3dv(v2); glNormal3d(0.0,-1.0,0.0);
glVertex3dv(O1);
glNormal3d(0.0,-1.0,0.0);
glVertex3dv(v1);
glEnd();
*/
}
Private void _stdcall display (){
// glClearColor(1.0,0.0,1.0,1.0); //设置背景颜色
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); //设置背景颜色
glColor3f(1.0,1.0,0.0);//设置绘制图形所用颜色 //设置图形转换信息
glLoadIdentity(); //清空矩阵
glTranslatef(0.0,-1.0,-5.0); //把圆柱体向Y负方向平移1单位,向Z负方向平移5单位
glRotatef(15.0,1.0,0.0,0.0); //把圆柱体绕X轴旋转15°
//具体绘制图形
for(int i=0;i <N;i++)
drawSurface(bottomVertex[i][0],bottomVertex[i+1][0],topVertex[i+1][0],topVertex[i][0]);
//绘制最后一个缺口
drawSurface(bottomVertex[N-1][0],bottomVertex[0][0],topVertex[0][0],topVertex[N-1][0]);
glFlush();//结束图形绘制的顶点给定,并最终输出至显示器完成图形的显示
}
Private void drawSurface(double v1,double v2,double v3,double v4)
{
glBegin(GL_POLYGON);//绘制侧面
glNormal3dv(v1);
glVertex3dv(v1); glNormal3dv(v2);
glVertex3dv(v2); glNormal3dv(v2);
glVertex3dv(v3); glNormal3dv(v1);
glVertex3dv(v4);
glEnd();
glBegin(GL_TRIANGLES);//绘制上底
glNormal3d(0.0,1.0,0.0);//法线向上
glVertex3dv(v3); glNormal3d(0.0,1.0,0.0);
glVertex3dv(O2); glNormal3d(0.0,1.0,0.0);
glVertex3dv(v4);
glEnd();
//因为下底面不接受光照,所以完全可以不绘制下底以加快速度
/* glBegin(GL_TRIANGLES);//绘制下底
glNormal3d(0.0,-1.0,0.0);//法线向下
glVertex3dv(v2); glNormal3d(0.0,-1.0,0.0);
glVertex3dv(O1); glNormal3d(0.0,-1.0,0.0);
glVertex3dv(v1);
glEnd();
*/
}
glNormal3dv(v1);
glVertex3dv(v1);
这个里面是数组型的,
drawSurface(bottomVertex[N-1][0],bottomVertex[0][0],topVertex[0][0],topVertex[N-1][0]);
这里它的指向地址类型的
用C#开发opengl
假设你的C++实在abc.dll里面public partial class NativeMethods
{ /// Return Type: void
[System.Runtime.InteropServices.DllImportAttribute("abc.dll")]
public static extern void display();
/// Return Type: void
///v1: double*
///v2: double*
///v3: double*
///v4: double*
[System.Runtime.InteropServices.DllImportAttribute("abc.dll")]
public static extern void drawSurface(ref double v1, ref double v2, ref double v3, ref double v4); }