<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5708770866488230857</id><updated>2011-12-28T21:43:56.322-08:00</updated><category term='visual studio'/><category term='c#'/><category term='xml'/><category term='directx'/><category term='ora-600'/><category term='юмор'/><category term='xsd'/><category term='книги'/><category term='oracle'/><title type='text'>Aрertо libro</title><subtitle type='html'>Мои сумбурные мысли</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pilipenko.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pilipenko.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Антон Пилипенко</name><uri>https://profiles.google.com/107616200163114051373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-lJFhaswZPi8/AAAAAAAAAAI/AAAAAAAAAWo/tg0md8Uc-Jw/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5708770866488230857.post-7719018578317806621</id><published>2010-03-26T00:05:00.001-07:00</published><updated>2010-03-26T00:06:45.020-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='юмор'/><title type='text'>А ваши программы выглядят так же?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BEBbwi2SdDY/S6xc37hcUBI/AAAAAAAAAJc/r_rSS3gZu5A/s1600/program.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_BEBbwi2SdDY/S6xc37hcUBI/AAAAAAAAAJc/r_rSS3gZu5A/s320/program.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5452835364779347986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Стырено &lt;a href="http://habrahabr.ru/blogs/humour/88962/"&gt;тут&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5708770866488230857-7719018578317806621?l=pilipenko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pilipenko.blogspot.com/feeds/7719018578317806621/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://pilipenko.blogspot.com/2010/03/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/7719018578317806621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/7719018578317806621'/><link rel='alternate' type='text/html' href='http://pilipenko.blogspot.com/2010/03/blog-post.html' title='А ваши программы выглядят так же?'/><author><name>Антон Пилипенко</name><uri>https://profiles.google.com/107616200163114051373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-lJFhaswZPi8/AAAAAAAAAAI/AAAAAAAAAWo/tg0md8Uc-Jw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_BEBbwi2SdDY/S6xc37hcUBI/AAAAAAAAAJc/r_rSS3gZu5A/s72-c/program.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5708770866488230857.post-7798077806880300856</id><published>2010-03-11T07:49:00.000-08:00</published><updated>2010-03-11T07:55:08.193-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ora-600'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>ORA-00600: internal error code, arguments: [qcsgpvc3], [], [], [], [], [], [], []</title><content type='html'>Ошибка&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ORA-00600: internal error code, arguments: [qcsgpvc3], [], [], [], [], [], [], []&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;при компиляции процедуры или функции появляется когда у вас имя параметра/переменной совпадает с именем колонки таблицы, от которой зависит процедура или функция&lt;br /&gt;В таком случае нужно переименовать параметр/переменную.&lt;br /&gt;Было замечено на 10g Enterprise Edition Release 10.2.0.4.0 32-bit Windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5708770866488230857-7798077806880300856?l=pilipenko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pilipenko.blogspot.com/feeds/7798077806880300856/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://pilipenko.blogspot.com/2010/03/ora-00600-internal-error-code-arguments.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/7798077806880300856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/7798077806880300856'/><link rel='alternate' type='text/html' href='http://pilipenko.blogspot.com/2010/03/ora-00600-internal-error-code-arguments.html' title='ORA-00600: internal error code, arguments: [qcsgpvc3], [], [], [], [], [], [], []'/><author><name>Антон Пилипенко</name><uri>https://profiles.google.com/107616200163114051373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-lJFhaswZPi8/AAAAAAAAAAI/AAAAAAAAAWo/tg0md8Uc-Jw/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5708770866488230857.post-7872136178704279035</id><published>2009-09-29T06:23:00.001-07:00</published><updated>2009-09-29T06:26:02.840-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xsd'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>xsd.exe и импортируемые схемы</title><content type='html'>Для нормальной генерации класса по xsd схеме с помощью xsd.exe с наличием импортирования одной схемы в другую необходимо перечислить не только схему, на основе которой хотелось бы сгенерировать класс. но и все импортированные схемы:&lt;br /&gt;&lt;br /&gt;xsd.exe /c Main.xsd Imported.xsd&lt;br /&gt;&lt;br /&gt;WBR&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5708770866488230857-7872136178704279035?l=pilipenko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pilipenko.blogspot.com/feeds/7872136178704279035/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://pilipenko.blogspot.com/2009/09/xsdexe.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/7872136178704279035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/7872136178704279035'/><link rel='alternate' type='text/html' href='http://pilipenko.blogspot.com/2009/09/xsdexe.html' title='xsd.exe и импортируемые схемы'/><author><name>Антон Пилипенко</name><uri>https://profiles.google.com/107616200163114051373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-lJFhaswZPi8/AAAAAAAAAAI/AAAAAAAAAWo/tg0md8Uc-Jw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5708770866488230857.post-6373452225990097316</id><published>2009-06-24T01:35:00.000-07:00</published><updated>2009-06-24T01:43:55.610-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><title type='text'>Автоинкремент номера билда в VS 2005, VS 2008</title><content type='html'>&lt;a href="http://autobuildversion.codeplex.com/"&gt;http://autobuildversion.codeplex.com/&lt;/a&gt;&lt;br /&gt;Отличное простое и бесплатное дополнение у Visual Studio версий 2005 и 2008 для автоматического изменения номеров версий и билдов сборок.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5708770866488230857-6373452225990097316?l=pilipenko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pilipenko.blogspot.com/feeds/6373452225990097316/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://pilipenko.blogspot.com/2009/06/vs-2005-vs-2008.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/6373452225990097316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/6373452225990097316'/><link rel='alternate' type='text/html' href='http://pilipenko.blogspot.com/2009/06/vs-2005-vs-2008.html' title='Автоинкремент номера билда в VS 2005, VS 2008'/><author><name>Антон Пилипенко</name><uri>https://profiles.google.com/107616200163114051373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-lJFhaswZPi8/AAAAAAAAAAI/AAAAAAAAAWo/tg0md8Uc-Jw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5708770866488230857.post-1129157438746561107</id><published>2009-06-08T03:40:00.000-07:00</published><updated>2009-06-08T06:05:53.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='directx'/><title type='text'>Управляемый DirectX #1 Рисуем треугольник</title><content type='html'>Треугольник является элементарным полигоном в трехмерной графике. Как вы, вероятно, помните их курса геометрии, для однозначного описания плоскости достаточно всего трех координат. Собственно поэтому треугольник полностью удовлетворяет этим требованиям.&lt;br /&gt;Для отрисовки любой поверхности можно пользоваться только треугольниками. Единственный вопрос в их количестве. Т.е. чем больше количество треугольником, тем более гладкой будет смотреться поверхность.&lt;br /&gt;&lt;br /&gt;Итак, мы решили нарисовать самую примитивную фигуру - треугольник. На самом деле это не такая уж тривиальная задача в рамках DirectX. Рассмотрим эту задачку подробнее.&lt;br /&gt;&lt;br /&gt;Для начала нам необходима собственно среда разработки (IDE). Я использую MS Visual Studio 2005.&lt;br /&gt;&lt;br /&gt;Теперь по шагам, что же необходимо сделать:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Шаг 1:&lt;br /&gt;Создать обычное Windows Application.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BEBbwi2SdDY/Sizt376AFrI/AAAAAAAAAFs/u9za2qVio5s/s1600-h/TraingeCreate1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 233px;" src="http://2.bp.blogspot.com/_BEBbwi2SdDY/Sizt376AFrI/AAAAAAAAAFs/u9za2qVio5s/s320/TraingeCreate1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5344908403011491506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Шаг 2:&lt;br /&gt;Добавление ссылок в проект:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BEBbwi2SdDY/SizvIpUBmOI/AAAAAAAAAF0/4xrE8OcknI0/s1600-h/TraingeCreate2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 262px;" src="http://2.bp.blogspot.com/_BEBbwi2SdDY/SizvIpUBmOI/AAAAAAAAAF0/4xrE8OcknI0/s320/TraingeCreate2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5344909789589772514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Необходимо выбрать библиотеки Microsoft.DirectX и Microsoft.DirectX.Direct3D. У меня их несколько, я выбрал последние версии их того, что было.&lt;br /&gt;&lt;br /&gt;После этого для более компактного написания приложения добавим 2 директивы в файл созданной формы:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;using Microsoft.DirectX;&lt;br /&gt;using Microsoft.DirectX.Direct3D;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Шаг 3:&lt;br /&gt;Непосредственное создание устройства:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Устройство в контексте DirectX является аналогом графического устройства, установленного на компьютере. Естественно этих устройств, как и графических устройств может быть несколько. Сначала добавим private член Device в нашу форму:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;private Device device = null;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Теперь необходимо написать функцию инициализации устройства:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;public void InitializeGraphics()&lt;br /&gt;     {&lt;br /&gt;         // Параметры представления&lt;br /&gt;         PresentParameters presentParams = new PresentParameters();&lt;br /&gt;         // указание того, что работать будем в оконном режиме&lt;br /&gt;         presentParams.Windowed = true;&lt;br /&gt;         // Указание по работе с буфером. В нашем случае будет производится сброс&lt;br /&gt;         // буфера если он не готов к представлению&lt;br /&gt;         presentParams.SwapEffect = SwapEffect.Discard;&lt;br /&gt;&lt;br /&gt;         // Создание устройства&lt;br /&gt;         device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);&lt;br /&gt;     }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Подробнее о создании устройства:&lt;br /&gt;1) первый параметр (adapter) конструктора определяет с каким abpbxtcrbv устройством необходимо работать. Нулевое значение указывает на устройство по умолчанию.&lt;br /&gt;2) Второй параметр DeviceType указывает на тип устройства. Мы будем использовать Hardware, т.е. аппаратное.&lt;br /&gt;3) третий параметр renderWindow связывает указанное окно с устройством рендеринга. Так как у нас окно уже есть, то ключевое слово this указывает на текущий объект типа Form.&lt;br /&gt;4) Параметр behaviorFlags для управления режимами устройства после его создания. Значение SoftwareVertexProcessing говорит о том, что обработку вершин необходимо передать ЦП.&lt;br /&gt;5) presentationParameters - параметры представления. Более подробное описание используемых свойств в комментариях.&lt;br /&gt;&lt;br /&gt;Далее необходимо изменить код входной точки приложения:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;static void Main()&lt;br /&gt;      {&lt;br /&gt;          using (Form1 triangeForm = new Form1())&lt;br /&gt;          {&lt;br /&gt;              triangeForm.Show();&lt;br /&gt;              triangeForm.InitializeGraphics();&lt;br /&gt;              Application.Run(triangeForm);&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;После этого мы получаем работающую форму без каких-либо отличий :)&lt;br /&gt;Срочно надо добавить что-нибудь в наш проект. И это будет перегрузка функции OnPaint, которая вызывается при перерисовке окна.&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;protected override void OnPaint(PaintEventArgs e)&lt;br /&gt;      {&lt;br /&gt;          device.Clear(ClearFlags.Target, Color.Chocolate, 1.0f, 0);&lt;br /&gt;          device.Present();&lt;br /&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Тут мы указываем, что хотим залить наше окно сплошным цветом.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BEBbwi2SdDY/Si0F089JcyI/AAAAAAAAAGE/nTZ0U_0kBqA/s1600-h/TraingeCreate3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://4.bp.blogspot.com/_BEBbwi2SdDY/Si0F089JcyI/AAAAAAAAAGE/nTZ0U_0kBqA/s320/TraingeCreate3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5344934740032582434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Хм, уже что-то, по крайней мере видны хоть какие-то результаты нашей работы.&lt;br /&gt;Ну а где же треугольник? Вот именно отрисовкой его мы и займемся прямо сейчас.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Шаг 4:&lt;br /&gt;Рисование треугольника:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Для этого необходимо немного изменить код функции перерисовки окна:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            device.Clear(ClearFlags.Target, System.Drawing.Color.CornflowerBlue, 1.0f, 0);&lt;br /&gt;&lt;br /&gt;                        CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[3];&lt;br /&gt;            verts[0].SetPosition(new Vector4(this.Width / 2.0f, 50.0f, 0.5f, 1.0f));&lt;br /&gt;            verts[0].Color = System.Drawing.Color.White.ToArgb();&lt;br /&gt;            verts[1].SetPosition(new Vector4(this.Width - (this.Width / 5.0f), this.Height - (this.Height / 5.0f), 0.5f, 1.0f));&lt;br /&gt;            verts[1].Color = System.Drawing.Color.Blue.ToArgb();&lt;br /&gt;            verts[2].SetPosition(new Vector4(this.Width / 5.0f, this.Height - (this.Height / 5.0f), 0.5f, 1.0f));&lt;br /&gt;            verts[2].Color = System.Drawing.Color.Red.ToArgb();&lt;br /&gt;&lt;br /&gt;            device.BeginScene();&lt;br /&gt;            device.VertexFormat = CustomVertex.TransformedColored.Format;&lt;br /&gt;            device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, verts);&lt;br /&gt;            device.EndScene();&lt;br /&gt;&lt;br /&gt;            device.Present();&lt;br /&gt;&lt;br /&gt;            this.Invalidate();&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Для описания данного кода не буду изголяться, а просто приведу слова автора:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Так как каждый элемент массива, который мы создали, представляет&lt;br /&gt;одну точку в нашем треугольнике, таким образом будет создано три элемента.&lt;br /&gt;Затем, используя структуру Vector4, мы вызываем метод SetPosition&lt;br /&gt;для каждого элемента массива. Местоположение преобразованной вершины&lt;br /&gt;определяется значениями X и Y в координатах экрана (относительно&lt;br /&gt;начала координат окна 0,0), а также значениями глубины Z и rhw-&lt;br /&gt;(обратная величина «homogenous w»). Последние два значения для нашей&lt;br /&gt;выборки игнорируются. Структура Vector4 очень удобна для задания&lt;br /&gt;информации о треугольнике.&lt;br /&gt;Далее мы устанавливаем цвет каждой вершины. Следует обратить&lt;br /&gt;внимание на то, что мы должны вызвать используемый для этого метод&lt;br /&gt;задания стандартных цветов ToArgb. В приложении Direct3D подразумевается,&lt;br /&gt;что цвета будут определяться 32-разрядными целыми числами, и&lt;br /&gt;данный алгоритм преобразует базовый цвет в этот формат.&lt;br /&gt;Важно помнить и то, что для определения координат нашего треугольника&lt;br /&gt;мы используем ширину и высоту текущего окна и должны это&lt;br /&gt;учитывать при изменении размеров треугольника.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь нужно указать, каким образом мы хотим рисовать наш треугольник.&lt;br /&gt;&lt;br /&gt;Это делается путем вызова кода&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;device.BeginScene();&lt;br /&gt;device.VertexFormat = CustomVertex.TransformedColored.Format;&lt;br /&gt;device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, verts);&lt;br /&gt;device.EndScene();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Первая строка - сообщаем о том, что мы готовы к отрисовке сцены.&lt;br /&gt;Вторая строка - сообщаем что мы хотим рисовать.&lt;br /&gt;Третья строка - описание фигуры, которую необходимо нарисовать. У нас это набор треугольников с единственным числом с указанием вершин.&lt;br /&gt;Четвертая строка - указание о окончании процедуры рисования.&lt;br /&gt;&lt;br /&gt;Это еще не все, для корректного отображения при изменении размеров окна необходимо добавить строчку &lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;this.Invalidate();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Эта строка заставит осуществлять принудительную перерисовку нашего окна.&lt;br /&gt;И еще одна строчка поставит точку в наших мытарствах:&lt;br /&gt;&lt;pre name="code" class="c#"&gt;&lt;br /&gt;this.SetStyLe(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ее необходимо вставить в конструктор формы.&lt;br /&gt;В итоге получаем такое вот приложение.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BEBbwi2SdDY/Si0LGW-veLI/AAAAAAAAAGM/zpdmbWGT3mE/s1600-h/TraingeCreate4.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://4.bp.blogspot.com/_BEBbwi2SdDY/Si0LGW-veLI/AAAAAAAAAGM/zpdmbWGT3mE/s320/TraingeCreate4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5344940536634505394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В следующем посте мы заставим треугольник летать и крутиться.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5708770866488230857-1129157438746561107?l=pilipenko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pilipenko.blogspot.com/feeds/1129157438746561107/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://pilipenko.blogspot.com/2009/06/directx-1.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/1129157438746561107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/1129157438746561107'/><link rel='alternate' type='text/html' href='http://pilipenko.blogspot.com/2009/06/directx-1.html' title='Управляемый DirectX #1 Рисуем треугольник'/><author><name>Антон Пилипенко</name><uri>https://profiles.google.com/107616200163114051373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-lJFhaswZPi8/AAAAAAAAAAI/AAAAAAAAAWo/tg0md8Uc-Jw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_BEBbwi2SdDY/Sizt376AFrI/AAAAAAAAAFs/u9za2qVio5s/s72-c/TraingeCreate1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5708770866488230857.post-7962034496796550734</id><published>2009-06-08T03:29:00.000-07:00</published><updated>2009-06-08T04:09:06.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='книги'/><category scheme='http://www.blogger.com/atom/ns#' term='directx'/><title type='text'>Управляемый DirectX #0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BEBbwi2SdDY/SizxJ7qt-8I/AAAAAAAAAF8/VDbxShoJSXk/s1600-h/book.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 202px;" src="http://3.bp.blogspot.com/_BEBbwi2SdDY/SizxJ7qt-8I/AAAAAAAAAF8/VDbxShoJSXk/s320/book.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5344912010719919042" /&gt;&lt;/a&gt;&lt;br /&gt;На русском языке на данный момент присутствует только одна книга по написанию приложений на управляемом DirectX. Это книга Томма Миллера &lt;a href="http://www.books.ru/shop/books/233470"&gt;"DirectX 9 с управляемым кодом. Программирование игр и графика"&lt;/a&gt;.&lt;br /&gt;Только вот написана она для .NET Framework v. 1.1. Хотя путем нехитрого приложения головы к примерам все становится на свои места.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5708770866488230857-7962034496796550734?l=pilipenko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pilipenko.blogspot.com/feeds/7962034496796550734/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://pilipenko.blogspot.com/2009/06/directx-0.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/7962034496796550734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5708770866488230857/posts/default/7962034496796550734'/><link rel='alternate' type='text/html' href='http://pilipenko.blogspot.com/2009/06/directx-0.html' title='Управляемый DirectX #0'/><author><name>Антон Пилипенко</name><uri>https://profiles.google.com/107616200163114051373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-lJFhaswZPi8/AAAAAAAAAAI/AAAAAAAAAWo/tg0md8Uc-Jw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_BEBbwi2SdDY/SizxJ7qt-8I/AAAAAAAAAF8/VDbxShoJSXk/s72-c/book.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
