|
Xors3D Графический движок с поддержкой DirectX9 |
28.12.2011, 18:41
|
#1
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Блендинг при мультитекстурировании
Код для Xors3D
Использую такие текстуры:
#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;
}
Получаю (проверил на разных машинах)
ЧЯДНТ? Я ожидал, что данный код нарисует жёлтую кракозябру поверх нижней картинки.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.12.2011, 18:46
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Блендинг при мультитекстурировании
xTextureBlend(tex1,TEXBLEND_MULTIPLY);
(ну или хз какая там константа для Мультиплай)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
28.12.2011, 18:50
|
#3
|
Зануда с интернетом
Регистрация: 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
|
Мастер
Регистрация: 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 за это полезное сообщение:
|
|
28.12.2011, 19:12
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Блендинг при мультитекстурировании
Действительно. При использовании ПНГ отпадает надобность и в флаге FLAGS_MASKED при загрузке. Рисуется всё как я хотел.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.01.2012, 06:05
|
#6
|
.
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.09.2012, 16:22
|
#7
|
Зануда с интернетом
Регистрация: 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
|
Мастер
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.09.2012, 01:54
|
#9
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Блендинг при мультитекстурировании
Ну тада уж спрайты. Ок.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:26.
|