Чтобы нарисовать пунктирную линию в OpenGL, я могу использовать glLineStipple, но как добиться такого же эффекта в OpenGL ES 1?Как нарисовать пунктирную линию с помощью OpenGL ES 1?
ответ
Линии могут быть текстурированы, как треугольники. Включите альфа-тестирование, примените альфа-текстуру, настройте некоторые координаты текстуры и наслаждайтесь.
glPushAttrib(GL_ENABLE_BIT);
# glPushAttrib is done to return everything to normal after drawing
glLineStipple(1, 0xAAAA); # [1]
glEnable(GL_LINE_STIPPLE);
glBegin(GL_LINES);
glVertex3f(-.5,.5,-.5);
glVertex3f(.5,.5,-.5);
glEnd();
glPopAttrib();
Большая часть этого кода не поддерживается в OpenGL * ES *. –
Это похоже на копию кода, возможно, из http://3dengine.org/Drawing_dotted_lines_%28OpenGL%29 – najjarammar
На самом деле я понял пристрастились линии или пунктирная линия, используя для петель, но она до сих пор делает не смысл использовать его в качестве связующего звена типа линии к способу рисования, вот код моим пристрастились линии и пунктирный линия ниже: пристрастилась линии:
(void)drawVerticalDotedInternalGrid{
float a,b;
int drawCount =0;
GLfloat dotedInternalGrid[1296];
for (a = -0.5f; a <= 0.5f; a +=0.5f) {
for (b = -0.875f; b <=0.925f; b += 0.025f)
{
dotedInternalGrid[drawCount] = b;
drawCount++;
dotedInternalGrid[drawCount] = a;
drawCount++;
};
};
glPointSize(1.0f);
glColor4f(0.863f,0.863f,0.863f,0.8f); //line color
glVertexPointer(2, GL_FLOAT, 0, dotedInternalGrid);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays(GL_POINTS, 0, 648);
glDisableClientState(GL_VERTEX_ARRAY);
}
пунктирная линия:
(void)drawVerticalDashedInternalGridH{
GLfloat dashedLine[1296];
float a,b;
int i =0;
//-0.4----0.4 // -0.875----0.900
for (a = -0.4f; a <= 0.4f; a +=0.1f) {
for (b =-0.825f; b <=0.950f; b+=0.025f) {
dashedLine[i] = b;
i++;
dashedLine[i] = a;
i++;
};
};
//glLineWidth(1.0f);
glColor4f(0.863f,0.863f,0.863f,1.f); //line color
glVertexPointer(2, GL_FLOAT, 0, dashedLine);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays(GL_LINES, 0, 648);
glDisableClientState(GL_VERTEX_ARRAY);
}
Конечно, вы можете видеть, что код рисует прямоугольник с определенными координатами, дело в том, как определить размер массива динамически для использования метода draw и количество линий для рисования.
Можете ли вы предоставить код для того же – Mayank