写了一个10000的循环判断数组然后画矩形,但是只能显示最后100多个矩形,前面部分的全是黑屏。
绘图代码部分:
OpenGL gl = openGLControl1.OpenGL;
gl.ClearColor(0, 0, 0, 0);
gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
gl.Begin(OpenGL.GL_QUADS);
float Red, Green, Blue;
double x, y, x1, y1;
Red =1.0f; Green = 0.0f; Blue = 0.0f;
for (int i =0; i<length; i++)
{
if (buffer[i] == '0') { Red = 1.0f; Green = 1.0f; Blue = 1.0f; }
else if (buffer[i] == '1') { Red = 1.0f; Green = 0.0f; Blue = 0.0f; }
else if (buffer[i] == '2') { Red = 1.0f; Green = 0.8392156863f; Blue = 0.0f; }
else if (buffer[i] == '3') { Red = 0.3176470588f; Green = 1.0f; Blue = 0.0f; }
else if (buffer[i] == '4') { Red = 0.0f; Green = 1.0f; Blue = 0.5176470588f; }
else if (buffer[i] == '5') { Red = 0.0f; Green = 0.6392156863f; Blue = 1.0f; }
else if (buffer[i] == '6') { Red = 0.1960784314f; Green = 0.0f; Blue = 1.0f; }
else if (buffer[i] == '7') { Red = 1.0f; Green = 0.0f; Blue = 0.9568627451f; }
else if (buffer[i] == ' ') { Red = 0.0f; Green = 0.0f; Blue = 0.0f; }
x = -1.0 + 0.02 * (num % widthnum);
y = 1.0 - 0.02 * (num / widthnum);
x1 = -1.0 + 0.02 * (num % widthnum + 1);
y1 = 1.0 - 0.02 * (num / widthnum + 1);
gl.Color(Red, Green, Blue);
gl.Vertex(x, y, 0.0f);
gl.Vertex(x1, y, 0.0f);
gl.Vertex(x1, y1, 0.0f);
gl.Vertex(x, y1, 0.0f);
//gl.Rect(x, y, x1, y1);
//gl.Flush();
num += 1;
}
gl.End();
使用gl.Rect就只显示最后100多个,如果使用gl.Begin(OpenGL.GL_QUADS);如果把循环次数调小到100以内能够显示完,数量多了也只能显示最后那100多个
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。