Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование штрих - линий. на DirectX 
:(
    Опции темы
Mastkir
Дата 21.2.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 11.5.2006

Репутация: нет
Всего: нет




Подскажите, как можно нарисовать штрих - линию средствами DirectX ? 

Чтобы она была такой: прозрачный штрих, черный штрих, прозрачный, черный, ...и т.д.

Я пытался сделать так: 
линия(кривая), которую следует отобразаить в виде штрих - линии, мне задана в виде набора точек. По этому набору
я заполнял массив VertexDif, содержащий D3DXVECTOR4 и D3DCOLOR. 

Затем вызывал 
device->DrawPrimitiveUP(D3DPT_LINESTRIP, count - 1, buf, sizeof(VertexDif));

Однако, правильное заполнение массива оказалось очень трудоемкой задачей (т.к. расстояния между первоначальным набором точек могут значительно отличаться друг от друга).

Как можно нарисовать штрих - линию более простым способом? Спасибо  smile 
PM MAIL   Вверх
NOT
Дата 1.3.2007, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 18.6.2005
Где: UA::CK

Репутация: нет
Всего: нет



Цитата(Mastkir @  21.2.2007,  17:13 Найти цитируемый пост)
Как можно нарисовать штрих - линию

ID3DXLine.

PM MAIL WWW   Вверх
Mastkir
Дата 1.3.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



ID3DXLine позволяет рисовать только сплошные линии - или я не прав?  smile 

А мне нужна штрих - линия.
PM MAIL   Вверх
NOT
Дата 2.3.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 18.6.2005
Где: UA::CK

Репутация: нет
Всего: нет



DirectX SDK Doc
HRESULT SetPattern(DWORD dwPattern);

Parameters:
dwPattern
Describes the stipple pattern: 1 is opaque, 0 is transparent.
PM MAIL WWW   Вверх
NOT
Дата 2.3.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 18.6.2005
Где: UA::CK

Репутация: нет
Всего: нет



Код

// -----------------------------------------------------------------------------------------
#include <d3dx9.h>
#include <d3dx9math.h>

ID3DXLine * pLine = NULL;

DWORD dwPattern = 01010101;

D3DXVECTOR2 vec[2] = 
{
    D3DXVECTOR2(0, 200),
    D3DXVECTOR2(500, 200)
};

D3DXCreateLine(pDirect3DDevice, &pLine);
// -----------------------------------------------------------------------------------------
void DrawLine( DWORD dwPattern, D3DXVECTOR2 vec[2] )
{


    pLine->SetPattern( dwPattern );

    pLine->SetWidth(4);
    pLine->SetPatternScale(2);

    pLine->Begin();

        pLine->Draw( vec, 2, D3DCOLOR_XRGB(255,255,255));

    pLine->End();
};
// -----------------------------------------------------------------------------------------

PM MAIL WWW   Вверх
Mastkir
Дата 10.3.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 11.5.2006

Репутация: нет
Всего: нет




Попробовал способ, предложенный NOT, однако он оказался крайне тормозной - просто очень-очень.

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


Может, я что-то не так сделал ?

И есть ли еще варианты рисования штрих-линий?
PM MAIL   Вверх
NOT
Дата 12.3.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 18.6.2005
Где: UA::CK

Репутация: нет
Всего: нет



Ты все не так сделал, ты не читал документацию, ты не знаешь, как поменять цвет, ты хочешь выучить DirectX задавая вопросы на форуме вместо того, чтоб искать и читать инфу. DX SDK Documnetation в руки и читать, читать, читать.
PM MAIL WWW   Вверх
Mastkir
Дата 12.3.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Для NOT:

Цитата(NOT @ 12.3.2007,  10:57)
ты не читал документацию

Безусловно, вы знаете, что я читал, а что - нет.

Цитата(NOT @ 12.3.2007,  10:57)
ты не знаешь, как поменять цвет

Я не очень понимаю, к чему это вы написали - я просто хотел сказать, что у меня даже после сильного редактирования вашего
примера, не получилось сделать нормальную штрих-линию. 
А вообще цвет менять - это просто изменить D3DCOLOR_XRGB(255,255,255)) на какой-то другой.
Возможно, существуют другие способы изменения цвета, не знакомые мне, но которые вы знаете? Тогда вы оказались правы - я не знаю, как менять цвет.

Цитата(NOT @ 12.3.2007,  10:57)
ты хочешь выучить DirectX задавая вопросы на форуме вместо того, чтоб искать и читать инфу

Действительно, у меня уже два(три?) сообщения на этом форуме, конечно, я хочу выучить DirectX задавая вопросы на форуме.

Цитата(NOT @ 12.3.2007,  10:57)
Ты все не так сделал

Безусловно! Спасибо, что открыли мне глаза на это.  smile 
Я исправлю свою ошибку, и данным форумом пользоваться больше не буду (а то еще выучу DirectX, задавая вопросы на этом форуме).

Цитата(NOT @ 12.3.2007,  10:57)
DX SDK Documnetation в руки и читать, читать, читать

Именно этим я и займусь - конечно, там обязательно будет написано, какие методы рисования штрих-линий быстрее, и почему. 
И как избавится от тормозов, если использовать ID3DXLine.

P.S.
  Мне кажется, вы потратили слишком много времени и усилий, отвечая на мои ламерские вопросы. Прошу меня извинить за это.
  Я бы добавил вам бал, чтобы поднять ваш рейтинг и хоть как-то отблагодарить вас - но к сожалению, у меня слишком мало сообщений 
  для этого.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0743 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.