我正在尝试使用子窗口通过旋转它来从曲线中生成一个对象。我能够生成所有曲线。现在我也把窗口分成了两部分。我想在左侧子窗口中绘制曲线,并希望通过沿右侧轴旋转来生成实体。我无法在正确的子窗口中绘制任何内容。
编辑:
好的,这就是我在左侧绘制点的方式。这些点基本上是用户的点击。我捕获这些事件并制作一个列表,然后使用 for 循环打印它们。
// This function takes a list of points and draws the dots in the screen
void drawDot(vector<vec2> listPts)
{
glBegin(GL_POINTS);
glColor3f(1.0,1.0,1.0);
if(j==0) // J=0 means points are being added using add option, no insert after is currently being used
{
for(int i=0;i<listPts.size();i++)
{
glVertex2i(listPts[i].x,listPts[i].y);
}
}
else if(j!=0)// this else part is for making selected points look red, as for this j!=0
{
for(int i=0;i<listPts.size();i++)
{
if(i==j ) // make only the selected point red
{
glColor3f(1.0,0.0,0.0);
glVertex2i(listPts[i].x,listPts[i].y);
}
else // rest all the points are same as before i.e. white
{
glColor3f(1.0,1.0,1.0);
glVertex2i(listPts[i].x,listPts[i].y);
}
}
}
glEnd();
glFlush();
}
现在假设我有一组点。我只想在正确的子窗口中绘制相同的点,看看它是否有效。所以,我创建了一个按钮,当我按下按钮时,我想切换到正确的窗口并绘制一些东西。我在 VS2010 中使用了调试,并检查是否调用了绘图函数并且正在调用它,但屏幕上仍然没有任何内容。
这是我用来在第二个窗口中绘制的函数。
void drawDotWin2(vector<vec2> listPts)
{
glBegin(GL_POINTS);
glColor3f(1.0,1.0,1.0);
for(int i=0;i<listPts.size();i++)
{
glVertex2i(listPts[i].x,listPts[i].y);
}
glEnd();
glutWireTeapot (0.5);
glFlush();
}
当我按下按钮时。上面的函数被调用但没有任何反应。我的坐标系错了吗?我没有做太多设置坐标系。