中国开发网: 论坛: 程序员情感CBD: 贴子 270912
leejd
【OpenGL贴】品雪牛请进
现象是:使用上下移动或者缩放时,图形中的某些点有时候会不见,左右移动没有问题,放大到一定的程度也是没有问题。

void __fastcall TFormDraw::DrawComps()
{
TDoublePoint Frame = DM->DrawCompFrame();
long Count = DM->DrawCompDataCount();
AnsiString Name, Shape;
double X, Y;
int Angle;

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,0);
glPushMatrix();
for (int i=0; i<Count; i++)
{
DM->DrawCompData(i, Name, X, Y, Angle, Shape);
if (Shape.UpperCase() == "RECT")
{
glBegin(GL_POLYGON);
glVertex2f((X-0.8)/Frame.x, (Y-0.4)/Frame.y);
glVertex2f((X+0.8)/Frame.x, (Y-0.4)/Frame.y);
glVertex2f((X+0.8)/Frame.x, (Y+0.4)/Frame.y);
glVertex2f((X-0.8)/Frame.x, (Y+0.4)/Frame.y);
glEnd();
}
else
{
glBegin(GL_POINTS);
glVertex2f(X/Frame.x, Y/Frame.y);
glEnd();
}
}
glPopMatrix();
SwapBuffers(hdc);
}


void __fastcall TFormDraw::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
switch(Key)
{
case 187:
glScaled(1+Scale,1+Scale,1);
break;
case 189:
glScaled(1-Scale,1-Scale,1);
break;
case VK_LEFT:
glTranslated (0-Step, 0.0, 0.0);
break;
case VK_RIGHT:
glTranslated (Step, 0.0, 0.0);
break;
case VK_UP:
glTranslated (0.0, Step, 0.0);
break;
case VK_DOWN:
glTranslated (0.0, 0-Step, 0.0);
break;
}
DrawComps();
}

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录