Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Pixel Bender/AGAL

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.11.2012, 04:40
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 1  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
По умолчанию Текстура рисуется повернутой на 180*

Код AS3:
			var code:String = "";
			code += "mov op, va0\n";
			code += "mov v1, va0\n";
 
			var vertexShader:ByteArray = assembler.assemble(Context3DProgramType.VERTEX, code);
 
			code =  "";
			code += "tex ft0, v1, fs0 <2d,clamp,linear>\n";
			code += "mov oc, ft0";
 
			var fragmentShader:ByteArray = assembler.assemble(Context3DProgramType.FRAGMENT, code);
			program.upload(vertexShader, fragmentShader);
Вот вроде ж как самая простая программа, какая только может быть для отображения картинок. Но нет, почему то рисует картинку перевернутой
__________________
ranga

Старый 19.11.2012, 16:20
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 2  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
UV координаты есть в модели на которую текстуру налаживаешь? Если есть, разверни их в 3D редакторе на 180* или картинку текстуры в фотошопе разверни на 180*

Старый 19.11.2012, 21:15
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 3  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
да не, я любую картинку скармливаю, и получаю перевернутую. причем старлинг то же самое хавает норм.
Ну может в другом чем то проблема, к счастью исходние не большой.

Код AS3:
package {
	import com.adobe.utils.AGALMiniAssembler;
	import com.adobe.utils.PerspectiveMatrix3D;
	import flash.display.Bitmap;
	import flash.display.Sprite;
	import flash.display3D.Context3D;
	import flash.display3D.Context3DBlendFactor;
	import flash.display3D.Context3DProgramType;
	import flash.display3D.Context3DTextureFormat;
	import flash.display3D.Context3DVertexBufferFormat;
	import flash.display3D.IndexBuffer3D;
	import flash.display3D.Program3D;
	import flash.display3D.textures.Texture;
	import flash.display3D.VertexBuffer3D;
	import flash.events.Event;
	import flash.geom.Matrix3D;
	import flash.geom.Vector3D;
	import flash.utils.ByteArray;
	import flash.utils.setTimeout;
	import meshes.IndexTemplate;
	import meshes.Poligon;
 
	/**
	 * ...
	 * @author vaukalak
	 */
	public class Main extends Sprite {
 
		private var _context:Context3D;
		private var _poligon:Poligon;
 
		private const _poligons:Vector.<Poligon> = new Vector.<Poligon>();
		private var position:Vector3D;
		private var indexBuffer:IndexBuffer3D;
 
		[Embed(source = "../lib/live_start.png")]
		public var textureAsset:Class;
 
		public function Main():void {
			stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, _onInit);
			stage.stage3Ds[0].requestContext3D();	
 
		}
 
		private function _onInit(e:Event):void {
			_context = stage.stage3Ds[0].context3D;
			_context.configureBackBuffer(stage.stageWidth, stage.stageHeight, 0);
			_context.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA);
			var texture:Texture = _context.createTexture(128, 128, Context3DTextureFormat.BGRA, false);
			var bitmap:Bitmap = new textureAsset() as Bitmap;
			texture.uploadFromBitmapData(bitmap.bitmapData, 0);
			_context.setTextureAt(0, texture);
 
 
			var program:Program3D = _context.createProgram();
			var assembler:AGALMiniAssembler = new AGALMiniAssembler();
 
			var code:String = "";
			code += "mov op, va0\n";
			code += "mov v1, va0\n";
 
			var vertexShader:ByteArray = assembler.assemble(Context3DProgramType.VERTEX, code);
 
			code =  "";
			code += "tex ft0, v1, fs0 <2d,clamp,linear>\n";
			code += "mov oc, ft0";
 
			var fragmentShader:ByteArray = assembler.assemble(Context3DProgramType.FRAGMENT, code);
			program.upload(vertexShader, fragmentShader);
 
 
			var vertixes:Vector.<Number> = new <Number>[
					-1, -1, 
					1, -1, 
					1, 1, 
					-1, 1, 
				];
			var vertexBuffer:VertexBuffer3D = _context.createVertexBuffer(4, 2);
			vertexBuffer.uploadFromVector(vertixes, 0, vertixes.length / 2);
			_context.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_2);
 
 
			var indexes:Vector.<uint> = new <uint>[0,1,2,2,3,1];
			indexBuffer = _context.createIndexBuffer(indexes.length);
			indexBuffer.uploadFromVector(indexes, 0, indexes.length);
 
			_context.setProgram(program);
 
			addEventListener(Event.ENTER_FRAME, _onEnterFrame);
 
		}
 
		private function _onEnterFrame(e:Event):void {
			_context.clear(1, 1, 1, 1);
			_context.drawTriangles(indexBuffer);
			_context.present();
		}
 
	}
__________________
ranga

Старый 20.11.2012, 11:26
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Принято UV координаты указывать в диапазоне [0, 1], у тебя же они [-1, 1] и в сэмплере установлен clamp - т.е. часть текстуры будет обрезаться. А переворачивается она потому что в stage3D ось y указывает вверх, а не вниз как во флэше - отсюда и зеркальное отражение по этой оси. Да и вообще, ты рисуешь вершины против часовой стрелки и получается, отображаешь заднюю сторону треугольника.

Старый 20.11.2012, 15:09
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 5  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
блин, 3 косяка в 100 строках ))) спасибо тебе!
__________________
ranga

Старый 20.11.2012, 16:09
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Ну тогда вдогонку - vertex во множественном числе - vertices или vertexes )))

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.