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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 28.12.2011, 18:41   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Блендинг при мультитекстурировании

Код для Xors3D
Использую такие текстуры:
Название: 0.jpg
Просмотров: 452

Размер: 561 байтНазвание: 1.jpg
Просмотров: 462

Размер: 1.1 Кб
#include <xors3d.h>

int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR commandLine, int commandShow)
{
    xAppTitle("sample");
	xGraphics3D(800, 600, 32, false, true);
	int camera = xCreateCamera();
	int cube = xCreateCube();
	xPositionEntity(cube,0,0,5);

	int tex0=xLoadTexture("0.bmp");
	int tex1=xLoadTexture("1.bmp",FLAGS_MASKED);

    xTextureBlend(tex0,TEXBLEND_ALPHA);
	xTextureBlend(tex1,TEXBLEND_ALPHA);

    xEntityTexture(cube,tex0,0,0);
	xEntityTexture(cube,tex1,0,1);

	while(!xKeyDown(1) || xWinMessage("WM_CLOSE"))
	{
	    xRenderWorld();
	    xFlip();
	}
    return 0;
}
Получаю (проверил на разных машинах)
Нажмите на изображение для увеличения
Название: res.jpg
Просмотров: 824
Размер:	5.6 Кб
ID:	15833
ЧЯДНТ? Я ожидал, что данный код нарисует жёлтую кракозябру поверх нижней картинки.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (29.12.2011)
Старый 28.12.2011, 18:46   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Блендинг при мультитекстурировании

xTextureBlend(tex1,TEXBLEND_MULTIPLY);

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

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

(Offline)
 
Ответить с цитированием
Старый 28.12.2011, 18:50   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Блендинг при мультитекстурировании

Это другой режим смешивания (будет выведена красная кракозябра)
http://help.boolean.name/commands/3d...xtureBlend.htm мне нужен аналог флага 1
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 28.12.2011, 19:01   #4
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Блендинг при мультитекстурировании



int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR commandLine, int commandShow)
{
    xAppTitle("sample");
	xGraphics3D(800, 600, 32, false, true);
	int camera = xCreateCamera();
	int cube = xCreateCube();
	xPositionEntity(cube,0,0,5);

	int tex0=xLoadTexture("0.jpg");
	int tex1=xLoadTexture("1.png");

	xTextureBlend(tex1,TEXBLEND_ALPHA);

    xEntityTexture(cube,tex0,0,0);
	xEntityTexture(cube,tex1,0,1);

	while(!xKeyDown(1) || xWinMessage("WM_CLOSE"))
	{
	    xRenderWorld();
	    xFlip();
	}
    return 0;
}
А почему с бмп не работает я не знаю
Изображения
 
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
impersonalis (28.12.2011), LLI.T.A.L.K.E.R. (29.12.2011)
Старый 28.12.2011, 19:12   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Блендинг при мультитекстурировании

Действительно. При использовании ПНГ отпадает надобность и в флаге FLAGS_MASKED при загрузке. Рисуется всё как я хотел.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (29.12.2011)
Старый 08.01.2012, 06:05   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Блендинг при мультитекстурировании

Потому что для ALPHA бленда используется четвёртый канал Alpha как параметр бленда. (sRGB * (1.0 - dA)) + (dRGB * dA) - псевдо объяснение, я с мат. знаниями олень, так что думаю хоть так понятно.
BMP - не поддерживает альфа каналов (там только 3 канала на пиксель сохраняется), а GIF, PNG и DSS держат Alpha канал без проблем. При этом GIF лишь как маску (1 бит на альфа канал), а PNG как полноценный канал - 8 бит или в зависимости от выбранного под формата.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (08.01.2012)
Старый 28.09.2012, 16:22   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Блендинг при мультитекстурировании

Снова проблема. Есть две текстуры: вертикальная белая линия на альфаканале и горизонтальная белая линия на альфаканале. Требуется наложить их на куб, так чтобы получилось перекрестие.
Какие только эффекты я не получал (когда уже отчаялся и перешёл к брутфорсу - хотя казалось бы multyply должно было хватить), включая логическое И, нужного добиться не удалось.
Смятение вносит и предыдущие разбирательства (см.выше) в которых показана рудиментарность флага FLAGS_MASKED.
#include <xors3d.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <iostream>

using namespace std;

int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR commandLine, int commandShow)
{
    xAppTitle("sample");
	xGraphics3D(800, 600, 32, false, true);
	int camera = xCreateCamera();
	xCameraClsColor(camera,0,100,0);


    int cube=xCreateCube();
    xPositionEntity(cube,0,0,5);


    int tex0=xLoadTexture("horz_line.png",FLAGS_MASKED);
    int tex1=xLoadTexture("vert_line.png",FLAGS_MASKED);

    xTextureBlend(tex0,??);
    xTextureBlend(tex1,??);

    xEntityTexture(cube,tex0,0,0);
    xEntityTexture(cube,tex1,0,1);

	while(!xKeyHit(1) || xWinMessage("WM_CLOSE"))
	{

	    xRenderWorld();
	    xFlip();
	}

    return 0;
}
Спасибо.
Изображения
  
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 28.09.2012, 21:29   #8
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Блендинг при мультитекстурировании

шейдер? в котором будет проверятся что бы пиксель был не прозрачным хотя бы в одной картинке и тогда не дискард.

или так

#include <xors3d.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <iostream>

using namespace std;

int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR commandLine, int commandShow)
{
    xAppTitle("sample");
	xGraphics3D(800, 600, 32, false, true);
	int camera = xCreateCamera();
	xCameraClsColor(camera,0,100,0);


    int cube0=xCreateCube();
    xPositionEntity(cube0,0,0,5);
    int cube1=xCreateCube();
    xPositionEntity(cube1,0,0,5);


    int tex0=xLoadTexture("horz_line.png",2);
    int tex1=xLoadTexture("vert_line.png",2);

    xEntityTexture(cube0,tex0,0,0);
    xEntityTexture(cube1,tex1,0,0);

	while(!xKeyHit(1) || xWinMessage("WM_CLOSE"))
	{

	    xRenderWorld();
	    xFlip();
	}

    return 0;
}
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (29.09.2012)
Старый 29.09.2012, 01:54   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Блендинг при мультитекстурировании

Ну тада уж спрайты. Ок.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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