Алекс Jenter - Программирование на Visual C++. Архив рассылки

Здесь есть возможность читать онлайн «Алекс Jenter - Программирование на Visual C++. Архив рассылки» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование на Visual C++. Архив рассылки: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование на Visual C++. Архив рассылки»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ
, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Программирование на Visual C++. Архив рассылки — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование на Visual C++. Архив рассылки», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Рисунок расчет нормали Находим 4 вектора к соседним точкам V01 P1 P0 - фото 20

Рисунок: расчет нормали

– Находим 4 вектора к соседним точкам:

V01 = P1 – P0;

V02 = P2 – P0;

V03 = P3 – P0;

V04 = P4 – P0;

– Находим 4 нормали к каждой из треугольных граней. Нормали находятся как векторное произведение соответствующих векторов.

N1 = [V02, V01];

N2 = [V03, V02];

N3 = [V04, V03];

N4 = [V01, V04];

– Искомая нормаль определяется как средний вектор четырех ранее найденных нормалей.

N = (N1 + N2 + N3 + N4) / 4;

Управление материалами.

Все в этом мире имеет цвет. Цвет определяет восприятие нами окружающего мира. Яблоко – красное, небо – синее и так далее. Для обозначения свойств поверхности объектов Direct3D использует термин "материал". Свойства материала описываются структурой D3DMATERIAL8:

typedef struct _D3DMATERIAL8 {

D3DCOLORVALUE Diffuse;

D3DCOLORVALUE Ambient;

D3DCOLORVALUE Specular;

D3DCOLORVALUE Emissive;

float Power;

} D3DMATERIAL8;

Переменные Diffuse, Ambient и Specular определяют, как данный материал отражает соответствующие компоненты источников света. Кроме того, Вы можете указать мощность, с которой отражается зеркальная (specular) составляющая света – это определяет вид бликов на объектах. Ненулевая излучательная (emissive) компонента заставляет объект светится, но помните, что свет, излученный объектом, никак не отражается прочими объектами сцены. Только источники света имеют право освещать кого-либо.

Для установки свойств материала объекта Вы должны вызвать функцию SetMaterial() перед вызовом DrawPrimitive() или любой другой функции рендеринга. Делается это, например, вот так:

hr = m_p3DDevice->SetMaterial(&m_theGraphMaterial);

ATLASSERT(SUCCEEDED(hr));

if (FAILED(hr)) {

return hr;

}

За подробностями обращайтесь к исходному коду моего проекта. Экспериментируйте, меняйте параметры, пишите, если что-то непонятно.

Вместо заключения

В конце я бы хотел сказать еще несколько слов по поводу демо-приложения. Оно имеет 4 окна свойств, каждое из которых может быть активировано из меню "Properties". Коротко опишу назначение каждого из окон:

• Material properties. Это окошко позволяет изменить свойства материала поверхности функции: диффузионную (diffuse), окружающую (ambient), излучательную (emissive) и зеркальную (specular) компоненты, а также мощность отражения (specular power).

• Light properties. Сцена освещена одним параллельным источником света. Вы можете изменить любую из составляющих спектра света. Кроме того, можно скорректировать направление света.

• Background color. Это всего-навсего цвет, используемый для очистки каждого нового кадра. Вы можете выбрать любой цвет фона по Вашему усмотрению.

• Function type. Вы можете выбрать одну из трех функций: Splash-функцию, плоскость или параболоид.

Все значения в окнах свойств редактируются с помощью трэкбаров. 0 – минимальное значение, 1 – максимальное. Минимальному значению соответствует нижнее положение трэкбара, максимальному – верхнее.

ПРИМЕЧАНИЕ

DirectX, Direct3D, Windows, Microsoft являются торговыми марками компании Microsoft. Все права защищены. OpenGL является торговой маркой фирмы Silicon Graphics Inc. Все права защищены.

ВОПРОС-ОТВЕТ

Почему вместо нормального контекстного меню появляется узкая полоска?

Автор: Александр Шаргин

Обычно такая проблема возникает, когда вы пытаетесь выполнить код следующего вида:

POINT pt;

GetCursorPos(&pt);

HMENU hMenu;

hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(_MENU1));

TrackPopupMenu(hMenu, 0, pt.x, pt.y, 0, hWnd, NULL);

DestroyMenu(hMenu);

В чём же здесь ошибка? Дело в том, что в Windows существует два совершенно разных вида меню – полоска меню (menu bar), которая традиционно размещается под заголовком окна, и всплывающее меню (popup menu). Работа и с тем, и с другим осуществляется с помощью хэндла типа HMENU. Это вносит некоторую путаницу, так как функции, предназначенные для работы с всплывающим меню, не могут работать с полоской меню, и наоборот.

Дескриптор всплывающего меню возвращают всего две функции – CreatePopupMenuи GetSubMenu. Именно эти функции можно использовать совместно с TrackPopupMenu(Ex). С другой стороны, функция LoadMenuзагружает из ресурсов полоску меню, что и приводит к ошибке.

Описание и примеры использования функций CreatePopupMenuи GetSubMenuможно найти в статье "Как отобразить контекстное меню?".

ЭКЗАМЕН

What two rectangular regions does Windows use to derive a scaling factor and an orientation?

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование на Visual C++. Архив рассылки»

Представляем Вашему вниманию похожие книги на «Программирование на Visual C++. Архив рассылки» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Алексей Макеев - Смертельный архив
Алексей Макеев
libcat.ru: книга без обложки
Алексей Апухтин
Отзывы о книге «Программирование на Visual C++. Архив рассылки»

Обсуждение, отзывы о книге «Программирование на Visual C++. Архив рассылки» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x