Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > JavaScript / HTML

JavaScript / HTML Создание динамической разметки страниц

Ответ
 
Опции темы
Старый 13.06.2012, 12:28   #1
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Вопрос WebGL глюк с полигональной сетью

Привет.
Проблема: Не получается построить полигональную сетку размерностью 32*32*32 квада.

Вот мой код:
	function fillQuad(xn,yn,zn) {
	var vertices = new Array();									//Масив вершин
	var sc_x = xn / 2;
	var sc_y = yn / 2;
	var sc_z = zn / 2;
	var iz,iy,ix;
		for (iz = -sc_z; iz < sc_z; iz++)
		{
			for (iy = -sc_y; iy < sc_y; iy++)
			{
				for (ix = -sc_x; ix < sc_x; ix++)
				{
					vertices.push(ix, iy+1, iz);				//додавання кординати вершини до масиву
					vertices.push(ix+1, iy+1, iz);
					vertices.push(ix+1, iy, iz);
					vertices.push(ix, iy, iz);
				}
			}
		}
	return vertices;
	}

	function fillBuffer(length) {
	var indecises = new Array();	
	alert(length);
		for (var n = 0; n < length ; n = n + 4)
		{
			indecises.push(n, n+1, n+2);
			indecises.push(n, n+2, n+3);
			bar.value = n / length * 1000;
		}
	return indecises;
	}

    	function initBuffers() {
        	QuadVertexPositionBuffer = gl.createBuffer();
		gl.bindBuffer(gl.ARRAY_BUFFER, QuadVertexPositionBuffer);		//Тип заповнення буферу
		var tWidth = 16;			//розмірність по осі X
		var tHeight = 16;			//розмірність по осі Y
		var tDepth = 16;			//розмірність по осі Z
		var QuadMass = new Array();
		QuadMass = fillQuad(tWidth,tHeight,tDepth);	//Вершини фронтальних полігонів
		gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(QuadMass), gl.STATIC_DRAW);
		
		//Запис індексів вершин мешу
		QuadIndecises = gl.createBuffer();
		gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, QuadIndecises);
		var Indecises = new Array();
		Indecises = fillBuffer(tWidth * tHeight * tDepth * 6);
		gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(Indecises), gl.STATIC_DRAW);
		QuadIndecises.numItems = tWidth * tHeight * tDepth;
    	}

	function drawScene() {
        gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
        gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

		//Перспектива
        mat4.perspective(45, gl.viewportWidth / gl.viewportHeight, 0.1, 1000.0, pMatrix);
        mat4.identity(mvMatrix);

		//Переміщення
		animate();
        mat4.translate(mvMatrix, [0.0, 0.0, -80.0]);
		mat4.rotate(mvMatrix, camR, [1, 1, 1]);
		
		//Надсилання обєктів на обробку в шейдерну програму
		//Масив вершин
        gl.bindBuffer(gl.ARRAY_BUFFER, QuadVertexPositionBuffer);
        gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0);
		//Індекси вершин
		gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, QuadIndecises);
		//Обробка трансформацій матриць
        setMatrixUniforms();
		
		//Вивід
        gl.drawElements(gl.TRIANGLES, QuadIndecises.numItems * 6, gl.UNSIGNED_SHORT, 0);
    }
Нажмите на изображение для увеличения
Название: canvas1.png
Просмотров: 893
Размер:	13.2 Кб
ID:	17033

Но если:

    	function initBuffers() {
        	QuadVertexPositionBuffer = gl.createBuffer();
		gl.bindBuffer(gl.ARRAY_BUFFER, QuadVertexPositionBuffer);		//Тип заповнення буферу
		var tWidth = 32;			//розмірність по осі X
		var tHeight = 32;			//розмірність по осі Y
		var tDepth = 32;			//розмірність по осі Z
		var QuadMass = new Array();
		QuadMass = fillQuad(tWidth,tHeight,tDepth);	//Вершини фронтальних полігонів
		gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(QuadMass), gl.STATIC_DRAW);
		
		//Запис індексів вершин мешу
		QuadIndecises = gl.createBuffer();
		gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, QuadIndecises);
		var Indecises = new Array();
		Indecises = fillBuffer(tWidth * tHeight * tDepth * 6);
		gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(Indecises), gl.STATIC_DRAW);
		QuadIndecises.numItems = tWidth * tHeight * tDepth;
    	}
то:
Нажмите на изображение для увеличения
Название: canvas.png
Просмотров: 980
Размер:	15.5 Кб
ID:	17032

Я не знаю в чем ошибка. Помогите пожалуйста.
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием
Старый 15.06.2012, 02:08   #2
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: WebGL глюк с полигональной сетью

...мда видимо никто с этим ране не сталкивался...
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием
Старый 15.06.2012, 14:31   #3
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: WebGL глюк с полигональной сетью

Не писал на WGL, но убедись что ты создал буффер нужного размера (размер указывается в битах, или в количестве переменных на вершину и т.п.)
Также буффер для индексов.
Затем когда указываешь какой буффер и сколько данных из него рендерить, убедись что и там указал правельные данные.
Т.к. можно пихать то что не лезет, и рендерить часть буффера, при этом WGL на это ничего не возразит.
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 03:22   #4
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: WebGL глюк с полигональной сетью

Все проверил - перепроверил по 10 раз. Результат не изменился.
Я залью свой проджект, чтобы вы смогли его попробовать у себя:
WEBRENDER
Нажмите на изображение для увеличения
Название: canvas.png
Просмотров: 915
Размер:	254.0 Кб
ID:	17043
Пожалуйста дайте мне знать если у вас оно будет отображаться по другому.
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 04:10   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: WebGL глюк с полигональной сетью

Отображается как на скрине.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 14:18   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: WebGL глюк с полигональной сетью

Русский текст на странице не распознаётся, добавь соответствующий хтмл сверху.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 00:44.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com