Подскажите, почему не рендерится треугольник? Просто белый экран и всё( Code: #include <windows.h> #include <d3d9.h> #include <d3dx9.h> #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) #pragma comment (lib, "d3d9.lib") #pragma comment (lib, "d3dx9.lib") ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// HRESULT InitialDX(HWND hWnd); // Функция инициализации DIRECTX HRESULT InitialBufferVershin(); void Render(); // Функция рендеринга(отрисовки) void ReleaseDX(); // Функция освобождения устройств. WNDCLASSEX windowsclass; MSG msg; HWND hWnd; LPDIRECT3D9 pDirect3D = 0; LPDIRECT3DDEVICE9 pDirect3DDevice = 0; LPDIRECT3DVERTEXBUFFER9 pBufferVershin = NULL; struct CUSTOMVERTEX { FLOAT x, y, z, rhw; DWORD color; }; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// LRESULT CALLBACK WinProc(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam) //функция обработки сообщений { switch(msg) { case WM_DESTROY: // закрытие(уничтожение) окна { ReleaseDX(); PostQuitMessage(0); return 0; } } return (DefWindowProc(hWnd,msg,wparam,lparam)); } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { // инициализация класа окна windowsclass.cbSize = sizeof(windowsclass); // Размер всей структуры windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); //Цвет фона окна windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW); //Вид курсора windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); //Иконка приложения windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // Иконка в заголовке окна windowsclass.hInstance = hInstance; //Экземпляр приложения windowsclass.lpfnWndProc = WinProc; //Наша функция обработки событий windowsclass.lpszClassName = L"windowsclass"; //Имя класса окна windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW; //Задание стиля окна RegisterClassEx(&windowsclass); //Регистрация класа окна в операционной системе //Создание окна hWnd = CreateWindow( L"windowsclass", //Имя класса окна L"DirectX", // Заголовок окна WS_OVERLAPPEDWINDOW|WS_VISIBLE, //Стиль окна 100, 100, // Координаты левого верхнего угла 600, // Ширина окна 600, // Высота окна NULL, // Дескриптор родительского окна NULL, // Дескриптор меню hInstance, // Экземпляр NULL); // Дополнительные параметры if (SUCCEEDED(InitialDX(hWnd))) { if(SUCCEEDED(InitialBufferVershin())) { ShowWindow(hWnd, nShowCmd); // Вывод окна UpdateWindow(hWnd); // Обновление окна ZeroMemory(&msg,sizeof(msg)); //Очистка сообщений while(msg.message!=WM_QUIT) // Цикл обработки сообщений { if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { Render(); //Наш код } } } } } HRESULT InitialBufferVershin() { CUSTOMVERTEX Vershin[] = { {30.0f, 30.0f, 0.5f, 0.1f, 0xffff0000, }, {30.0f, 30.0f, 0.5f, 0.1f, 0xff00ff00, }, {15.0f, 15.0f, 0.5f, 0.1f, 0xff0000ff, }, }; pDirect3DDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &pBufferVershin, NULL); VOID* pBV; pBufferVershin->Lock(0, sizeof(Vershin), (VOID**)&pBV, 0); memcpy(pBV, Vershin, sizeof(Vershin)); pBufferVershin->Unlock(); return S_OK; } HRESULT InitialDX(HWND hWnd) { if(NULL==(pDirect3D=Direct3DCreate9(D3D_SDK_VERSION))) //создание основного интерфейса return E_FAIL; D3DDISPLAYMODE Display; // структура с настройками монитора if (FAILED(pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&Display))) // получение настроек монитора. return E_FAIL; D3DPRESENT_PARAMETERS Direct3DParametr; // Структура с настройками ZeroMemory(&Direct3DParametr,sizeof(Direct3DParametr)); // Обнуление структуры Direct3DParametr.Windowed=TRUE; // Рeжим отображения приложения(true - оконное, false -полноэкранное) Direct3DParametr.SwapEffect=D3DSWAPEFFECT_DISCARD; // Метод переключения буферов Direct3DParametr.BackBufferFormat=Display.Format; // Формат пикселя(колличество разрядов цвета) Direct3DParametr.EnableAutoDepthStencil=TRUE; // Управление буфером глубины Direct3DParametr.AutoDepthStencilFormat=D3DFMT_D16; // Формат буфера глубины Direct3DParametr.BackBufferWidth=Display.Width; // Ширина буфера Direct3DParametr.BackBufferHeight=Display.Height; // Высота буфера //Direct3DParametr.FullScreen_RefreshRateInHz=Display.RefreshRate; //Частота обновления экрана(только в полноэкранном режиме) if (FAILED(pDirect3D->CreateDevice(D3DADAPTER_DEFAULT, // используемая видеокарта D3DDEVTYPE_REF, // тип устройства hWnd, // дескриптор родительского окна D3DCREATE_HARDWARE_VERTEXPROCESSING, //режим обработки шейдеров &Direct3DParametr, // структура с настройками &pDirect3DDevice))) // указатель на устройство { MessageBox(hWnd, L"Error", L"Error", MB_OK|MB_ICONEXCLAMATION); return E_FAIL; } return S_OK; } void Render() { pDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,255,255),0.0f,0); //Очистка вторичного буфера pDirect3DDevice->BeginScene(); pDirect3DDevice->SetStreamSource(0, pBufferVershin, 0, sizeof(CUSTOMVERTEX)); pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX); pDirect3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1); pDirect3DDevice->EndScene(); //Конец рендеринга pDirect3DDevice->Present(NULL,NULL,NULL,NULL); // копирование вторичного буфера в первичный } void ReleaseDX() { if(pBufferVershin!=NULL) pBufferVershin->Release(); if(pDirect3DDevice!=NULL) pDirect3DDevice->Release(); if(pDirect3D!=NULL) pDirect3D->Release(); }
В универе задали наваять прогу, работа с динам.типами данных, значит нужно создать двунаправленный список (осуществить поиск по ключу, добавление и тд.) Лекции пропустил, поэтому не пойму что такое двунаправленный список и чем он отличается от однонаправленного, помогите отыскать нужный "велосипед" (если есть) или тыкните, пожалуйста, где почитать об этом.
Да гугол помог) Но не могу найти как осуществлять поиск по ключу в двунаправленном списке: PHP: struct list { int key; list *next; list *previous; };
Ну а что тут искать? PHP: list* current = start; while (current != NULL && current->key != search_key) { current = current->next; } return current;
всем спасибо, плюсанул) Ещё есть сомнения в "Добавления элемента перед максимальным ключом", помогите ) зы: не выходит список инициализировать, тоесть при первом запуске программы нужно заполнить список, а потом уже добавлять, если нужно, новые элементы
Для этого надо реализовать два метода: 1) PHP: list* find_max(list* start) { list* max_node = start; list* current = start->next; while (current != NULL) { if (current->key > max_node->key) { max_node = current; } current = current->next; } return max_node; } 2) PHP: void insert_before(list* place, list* new_node) { new_node->previous = place->previous; place->previous = new_node; new_node->next = place; } Теперь просто можно написать insert_before(find_max(start), new_node);
Никак не могу понять - посылаю запрос на сервер ( GET ), в ответ пишет строки с информацией, а ниже какие-то символы, причём их много... что это за символы и как их распознать?
Подскажите, как мне вывести текст в DirectX 9 c++. Я учу DirectX по книге Горнакова, а там с исходником проблема)
Выкладываю скрин ответа: Собственно интересует всякая хрень в середине, что это? Код запроса: Code: char url[] = "/"; char host[] = "rap-portal.org.ua"; sprintf( request, "GET %s HTTP/1.1\r\nHost: %s\r\nConnection: Close\r\n\r\n", url, host ); send( s, request, strlen( request ), 0 ); recv( s, response, 5000, 0 ); printf( "%s\r\n", response );
вот решил выложить сюда книги и сайти по directX/openGl. Я создавал отдельную тему, но она канула в небытие)) Не знаю куда писать, если написал не туда, не ругайтесь) Книги по DirectX. Отечественных авторов: Станислав Горнаков - "DirectX 9: Уроки программирования на С++" Михаил Фленов - "DirectX & C++. Искусство программирования" Алексей Попов - "DirectX 10 - это просто. Программируем графику на С++" Переведенные на русский язык: Франк Луна - "Введение в программирование трехмерных игр с DirectX 9" Том Миллер - "Managed DirectX 9" Тодд Баррон - "Программирование стратегических игр с DirectX 9" Джим Адамс - "Direct3D 9.0. Продвинутая аннимация" Грег Снук - "3D- ландшафты в реальном времени на C++ и DirectX 9" Ален Торн - "Графика в формате DirectX 9. Полное руководство по использованию 3D-пространства" Ален Торн - "DirectX 9. Осваиваем 3D-пространство" Стен Трухильо - "Графика для Windows средствами DirectDraw" Англоязычные: Wolfgang F. Engel - "ShaderX2: Introductions and Tutorials with DirectX" Wolfgang F. Engel - "ShaderX2 Shader Programming Tips and Tricks with DirectX 9" Kris Gray - "Microsoft DirectX 9 Programmable Graphics Pipeline" Lynn Thomas Harrison - "Introduction to 3D Game Engine Design Using DirectX 9 and C Sharp" Jones W. — "Beginning DirectX 9" Kovach P.J. - "Inside Direct3D" James C. Leiterman - "Learn Vertex and Pixel Shader Programming with DirectX 9" Lobão A.S., Hatton E. - ".NET Game Programming with DirectX 9.0" Alan Thorn - "DirectX 9 Graphics: The Definitive Guide to Direct 3D" Alan Thorn - "DirectX 9 User Interfaces: Design and Implementation." Peter Walsh - "Advanced 3D Game Programming with DirectX 9.0" Dempski K. - "Real-Time Rendering Tricks and Techniques in DirectX" Онлайн-ресурсы: http://msdn.microsoft.com/en-us/directx/aa937788.aspx http://developer.nvidia.com/object/sdk_home http://www.intuit.ru/department/graphics/direct3dhlsl/ Книги по OpenGL. Отечественных авторов: Боресков А.В. - "Графика трехмерной компьютерной игры на основе OpenGL" Михаил Краснов - "OpenGL. Графика в проектах Delphi" Сергей Гайдуков - "OpenGL. Профессиональное программирование трехмерной графики на C++." О. В. Бартеньев - "Графика OpenGL: программирование на Фортране" Баяковский Ю.М., Игнатенко А.В., Фролов А.И. - "Графическая библиотека OpenGL" Юрий Тихомиров - "OpenGL. Программирование трехмерной графики" Переведенные на русский язык: Ричард С. Райт-мл., Бенджамин Липчак - "OpenGL. Суперкнига" Эдвард Энджел - "Интерактивная компьютерная графика. Вводный курс на базе OpenGL" Дональд Херн, М. Паулин Бейкер - "Компьютерная графика и стандарт OpenGL" Т. Девис, Дж. Нейдер, Д. Шрайнер - "OpenGL. Руководство по программированию." Рэнди Дж. Рост - "OpenGL. Трехмерная графика и язык программирования шейдеров" Френсис Хилл - "OpenGL. Программирование компьютерной графики" Англоязычные: OpenGL Red Book and Blue Book Astle D., Hawkins K. - "Beginning OpenGL Game Programming" Buss S.R. - "A mathematical introduction with OpenGL" Robert P. Kuehne, J. D. Sullivan - "OpenGL Programming on Mac OS X: Architecture, Performance, and Integration" Martz P. - "OpenGL® Distilled" McReynolds T., Blythe D. - "Advanced Graphics Programming Using OpenGL" Randi Rost - "OpenGL Shading Language" Mark Segal, Kurt Akeley - "Graphics System: A Specification. (Version 1.5)" Онлайн-ресурсы: http://nehe.gamedev.net/ Книги по программированию игр общей тематики: Андре Ламот - "Программирование трехмерных (3D) игр для Microsoft Windows.Советы профессионала по трехмерной графике и растеризации" (Tricks of the 3D Game Programming Gurus: Advanced 3D Graphics and Rasterization) Андре Ламот - "Программирование игр для Windows. Советы профессионала" (Tricks of the Windows Game Programming Gurus) Andre LaMothe - "Game Programming for the Propeller Powered HYDRA" Andre LaMothe - "The Black Art of Video Game Console Design" Andre LaMothe - "Tricks of the Game Programming Gurus" Andre LaMothe- "Black Art of 3D Game Programming: Writing Your Own High-Speed 3D Polygon Video Games in C" Andre LaMothe - "Teach Yourself Game Programming in 21 Days" Алексей Поляков, Виталий Брусенцев - "Методы и алгоритмы компьютерной графики в примерах на Visual C++" David H. Eberly. - "3D Game Engine Design" Eric Lengyel - "Mathematics for 3D Game Programming and Computer Graphics" Tomas Moller, Eric Haines - "Real-Time Rendering" Стюарт Рассел, Питер Норвиг - "Искусственный интеллект: современный подход (AIMA)" Алекс Дж. Шампандар - "Искусственный интеллект в компьютерных играх. Как обучить виртуальные персонажи реагировать на внешние воздействия" Д. Конгер - "Физика для разработчиков компьютерных игр" Ian Millington - "Game Physics Engine Development" David M. Bourg - "Physics for Game Developers" Мейсон МакКаски - "Звук в играх. Технологии программирования" Grenville Armitage, Mark Claypool, Philip Branch - "Networking and Online Games: Understanding and Engineering Multiplayer Internet Games" Эндрю Роллингз, Дэйв Моррис - "Проектирование и архитектура игр" В. В. Касихин - "Как стать создателем компьютерных игр. Краткое руководство." Маниш Сети - "Программирование игр" Серия "Game Programming Gems" Серия "GPU Gems"
Это не заполненая часть переменной char response (код каракули "-52"). Чтобы в консоли не отображались эти каракули достаточно поставить нулл байт. Пример: Ну а: via: ... connection: close это и есть ваш ответ от сервера.
Ясно, а как получить данные со страницы или хотя бы HTML-код ? Например: Есть страница в интернете, которая выводит цифру на экран, как получить именно это цифру и запихнуть её в переменную?
Code: Ясно, а как получить данные со страницы или хотя бы HTML-код ? Так же как и вы получали (не знаю почему такой ответ вернулся у вас (как на скрине), но у меня все нормально принимается). Для того чтобы получить полную страницу - используйте в цикле recv. Пример: Code: //примерный ответ от сервера sprintf(request, "Header1: 200 ok\r\nHeader2: lalala\r\nHeader3: close\r\n\r\n1432"); int i = 0, i2 = 0, len, gowrite = 0, res = 0; char int_in_char[12]; len = strlen(request); while (i != len) { if (gowrite == 1) { int_in_char[i2] = request[i]; i2++; } //Если обнаружили конец описания хедеров сервера то if ((request[i] == '\r') && (request[i + 1] == '\n') && (request[i + 2] == '\r') && (request[i + 3] == '\n')) { gowrite = 1; i += 3; } i++; } int_in_char[i2] = '\0'; //нормализуем строку res = atoi(int_in_char); //переводим в int вид html код между хедерами разделяется \r\n\r\n (простите за мой говно код )
Всё, с этим разобрался... Никак не могу понять отправку запроса: POST, передаются параметры: name=fobot pass=123456 и д.р. Так вот - Как должна выглядеть строка запроса?
Всем привет. Какую книжку посоветуете скачать для изучения Си? Я новичок,и нужно чтоб было предельно понятно. P.S. На днях экзамен,а я ничего не знаю))