请问GDI,OPENGL,DIRECTX画二维图形速度哪个更快

请教GDI,OPENGL,DIRECTX画二维图形速度哪个更快?
原来是通过VC+GDI画图的,图中有大量填充,GDI画图时间太长,想用OPENGL,做了如下测试:
填充大小相同的矩形,GDI所花时间为4秒,OPENGL所长时间为6秒,
只画矩形不填充,GDI所花时间为0.6秒,OPENGL所长时间为1.2秒
为什么OPENGL画二维图形比GDI还慢,还是我程序有问题?DIRECT没用过,不知速度是否会快点?

OPENGL代码:
BOOL   CGlTestDlg::GL_Init()
{
static   PIXELFORMATDESCRIPTOR   pfd   =     //定义一个PIXELFORMATDESCRIPTOR结构变量   pdf,并初始化
{
sizeof(PIXELFORMATDESCRIPTOR), //该结构大小
1, //版本号
PFD_DRAW_TO_WINDOW   | //格式必须支持窗口
PFD_SUPPORT_OPENGL   | //格式必须支持OPENGL
PFD_DOUBLEBUFFER, //必须支持双缓冲
24, //颜色深度
0,0,0,0,0,0, //忽略的色彩位
0, //无Alpah缓存
0, //忽略Shift   Bit
0, //无聚集缓存
0,0,0,0, //忽略聚集位
32, //16位   Z-缓存(深度缓存)
0, //无模板缓存
0, //无辅助缓存
PFD_MAIN_PLANE, //主绘图层
0, //保留
0,0,0 //忽略层遮罩
};


HWND   TmpWnd   =   m_DrawingWindow.m_hWnd;
g_hdc   =   ::GetDC(TmpWnd); //取得设备描述表

GLuint   iPixelFormat;

if(   !(iPixelFormat   =   ChoosePixelFormat(g_hdc,&pfd)))
{
GL_UnInit();
AfxMessageBox( "不能找到相应像素格式! ");
return   FALSE;
}
if(!SetPixelFormat(g_hdc,iPixelFormat,&pfd))
{
GL_UnInit();
AfxMessageBox( "不能设置像素格式! ");
return   FALSE;
}

if(!(g_hRC   =   wglCreateContext(g_hdc)))
{
GL_UnInit();
AfxMessageBox( "不能创建设备描述表! ");
return   FALSE;
}

if(   !wglMakeCurrent(g_hdc,g_hRC))
{
GL_UnInit();
AfxMessageBox( "不能激活设备描述表! ");
return   FALSE;
}

m_DrawingWindow.GetWindowRect(&gl_Rc);

GL_ResizeScene(gl_Rc.Width(),gl_Rc.Height());

if(!GL_InitCfg())   return   FALSE;

return   TRUE;
}

void   CGlTestDlg::GL_ResizeScene(int   iWidth,   int   iHeight)
{
if(iHeight   ==   0)   iHeight   =   1;

glViewport(0,0,iWidth,iHeight); //设置视口
glMatrixMode(GL_PROJECTION); //   选择投影矩阵
glLoadIdentity(); //   重置投影矩阵

gluPerspective(45,(GLfloat)iWidth/(GLfloat)iHeight,0.1f,100.0f);//   计算窗口的外观比例
// glOrtho(-65,65,55,-55,0.1f,100.0f);

glMatrixMode(GL_MODELVIEW); //选择模型观察矩阵
glLoadIdentity(); //重置模型观察矩阵

}

BOOL   CGlTestDlg::GL_InitCfg()
{
glShadeModel(GL_SMOOTH); //启用阴影平滑
glClearColor(0.0f,0.0f,0.0f,0.0f); //黑色背景

glClearDepth(1.0f); //设置深度缓存
glEnable(GL_DEPTH_TEST); //启用深度测试
glDepthFunc(GL_LEQUAL); //所作深度测试的类型

glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); //真正精细的透视修正
glEnable(GL_POINT_SMOOTH);

return   TRUE;
}

//画图
glClearColor(0.0f,0.0f,0.0f,1.0f);
glClear(GL_COLOR_BUFFER_BIT   |   GL_DEPTH_BUFFER_BIT);   //清除屏幕和深度缓存
glLoadIdentity(); //重置当前的模型观察矩阵
GL_DrawScene();
::glFinish();  
SwapBuffers(g_hdc); //交换缓存(双缓存)


//画矩形
glBegin(GL_QUADS);
for   (int   i=1;i <100000;i++)  
{
glVertex2f(-50.0f,5.0f);
glVertex2f(-10.0f,5.0f);
glVertex2f(-10.0f,25.0f);
glVertex2f(-50.0f,25.0f);
}
glEnd();


//GDI中画图
for   (int   i=1;i <100000;i++)  
{
Rectangle(...)
}

------解决方案--------------------