Пример #1
0
static bool
test_line(const struct stipple_line *line)
{
	GLuint i;

	glLineStipple(line->factor, line->pattern);
	glColor3f(line->color[0], line->color[1], line->color[2]);
	glBegin(line->primitive);
	for (i = 0; i < line->nvertices; ++i)
		glVertex2f(line->vertices[i].x + 0.5, line->vertices[i].y + 0.5);
	glEnd();

	glReadBuffer(GL_BACK);
	if (line->primitive == GL_LINES) {
		for (i = 0; i + 1 < line->nvertices; i += 2) {
			GLuint fragment = 0;
			if (!probe_line(line, i, i + 1, &fragment))
				return false;
		}
	} else {
		GLuint fragment = 0;
		for (i = 0; i + 1 < line->nvertices; ++i) {
			if (!probe_line(line, i, i + 1, &fragment))
				return false;
		}
		if (line->primitive == GL_LINE_LOOP) {
			if (!probe_line(line, i, 0, &fragment))
				return false;
		}
	}

	return true;
}
Пример #2
0
static void test_line(const struct stipple_line *line)
{
	GLuint i;

	glLineStipple(line->factor, line->pattern);
	glColor3f(line->color[0], line->color[1], line->color[2]);
	glBegin(line->primitive);
	for(i = 0; i < line->nvertices; ++i)
		glVertex2f(line->vertices[i].x + 0.5, line->vertices[i].y + 0.5);
	glEnd();

	glReadBuffer(GL_BACK);
	if (line->primitive == GL_LINES) {
		for(i = 0; i+1 < line->nvertices; i += 2)
			probe_line(line, &line->vertices[i], &line->vertices[i+1], 0);
	} else {
		GLuint fragment = 0;
		for(i = 0; i+1 < line->nvertices; ++i)
			fragment = probe_line(line, &line->vertices[i], &line->vertices[i+1], fragment);
		if (line->primitive == GL_LINE_LOOP)
			probe_line(line, &line->vertices[i], &line->vertices[0], fragment);
	}
}