Страницы (3): [1] 2 3 » Показать все 45 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- ...а с чего начинать? (https://hlfx.ru/forum/showthread.php?threadid=614)
...а с чего начинать?
Вот такой вот сабж.
Сам я когда то чуток увлекался программированием, но мои увлечения особо дальше "Хеллоу, ворлд!", решалки квадратных уравнений да базового знакомства с ООП не пошли - полное отсутствие мотивации\примеров для отработки практических скиллов(Тогда у меня не было интернета). В той или иной мере теоретически знаком со всем этим на Делфи(ну Паскале), си++ и Жаве(с нее начинал читать про ООП - первый месяц для меня это был тихий ужас). Но, однажды прошлым летом скачал некую чтуку что называлась, вроде, не иначе как GLScene - при помощи Делфи можно писать проги для API OpenGL. При помощи этой чтуки и туторов сумел (почти) своими силами сделать пару 3ехмерных кубиков\шариков, чему был несказанно горд Но потом забил на это дело. А теперь вот - ...
...хочу продолжить освоение ОпенГЛ. Моя цель пока - научится делать хоть что то, вроде тех же вращающихся кубиков\шариков\текстурирования оных... Но хочу почему то делать это на C++.
Вот и такие вопросы. С чего мне начинать? На каком языке лучше осваивать, может лучше вернутся к Делфи? Какие есть ресурсы на эту тему\хорошие туторы? Это вообще реально с моими программервкими познаниями или мне нужно сначала освоить тот же c++ на должном уровне?
Какой юзать инструментарий, положим, Visual C++ 2005 подойдет?
Заранее огромное спасибо за любую помощь. И пожалуйста - не смейтесь надо мной, ведь те кто умеет писать на OpenGL сам когда то был таким как я
__________________
"Что вы знаете, ничтожные ?! Что вы видели, чем вы живёте и дышите? что есть ваши ложные идолы, ваши продажные суждения о мире?
Умойтесь кровью своей и разорвите плоть грешную свою; конец ваших пресмыканий близок. Ибо наша религия - U, наша стихия - огонь, и наша богиня - Вандора!"
На С++ писать лучше, конечно.
Туторы хорошие вот тут - http://pmg.org.ru/nehe/
Как для начинающих, так и для продвинутых
__________________
а почему бы не писать на яве?
тоже очень неплохо... =)
__________________
Рассыпалась соль - к ссоре.
Рассыпался сахар - к миру.
Рассыпался кокаин - к феерическим ощущениям и фантасмагорическим видениям.
Ласточки низко летают - будет дождь.
Коровы низко летают - рассыпался кокаин.
__________________
"Что вы знаете, ничтожные ?! Что вы видели, чем вы живёте и дышите? что есть ваши ложные идолы, ваши продажные суждения о мире?
Умойтесь кровью своей и разорвите плоть грешную свою; конец ваших пресмыканий близок. Ибо наша религия - U, наша стихия - огонь, и наша богиня - Вандора!"
__________________
Рассыпалась соль - к ссоре.
Рассыпался сахар - к миру.
Рассыпался кокаин - к феерическим ощущениям и фантасмагорическим видениям.
Ласточки низко летают - будет дождь.
Коровы низко летают - рассыпался кокаин.
__________________
"Что вы знаете, ничтожные ?! Что вы видели, чем вы живёте и дышите? что есть ваши ложные идолы, ваши продажные суждения о мире?
Умойтесь кровью своей и разорвите плоть грешную свою; конец ваших пресмыканий близок. Ибо наша религия - U, наша стихия - огонь, и наша богиня - Вандора!"
__________________
Рассыпалась соль - к ссоре.
Рассыпался сахар - к миру.
Рассыпался кокаин - к феерическим ощущениям и фантасмагорическим видениям.
Ласточки низко летают - будет дождь.
Коровы низко летают - рассыпался кокаин.
zimer Все это отлично и даже замечательно. Но мы тут как бы про OpenGL на c++, нет?
__________________
"Что вы знаете, ничтожные ?! Что вы видели, чем вы живёте и дышите? что есть ваши ложные идолы, ваши продажные суждения о мире?
Умойтесь кровью своей и разорвите плоть грешную свою; конец ваших пресмыканий близок. Ибо наша религия - U, наша стихия - огонь, и наша богиня - Вандора!"
__________________
Рассыпалась соль - к ссоре.
Рассыпался сахар - к миру.
Рассыпался кокаин - к феерическим ощущениям и фантасмагорическим видениям.
Ласточки низко летают - будет дождь.
Коровы низко летают - рассыпался кокаин.
1>------ Build started: Project: opengl00, Configuration: Debug Win32 ------ 1>Compiling... 1>opengl00.cpp 1>c:\documents and settings\moonsond\my documents\visual studio 2005\projects\opengl00\opengl00\opengl00.cpp(95) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [35]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>c:\documents and settings\moonsond\my documents\visual studio 2005\projects\opengl00\opengl00\opengl00.cpp(102) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [27]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>c:\documents and settings\moonsond\my documents\visual studio 2005\projects\opengl00\opengl00\opengl00.cpp(109) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [37]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>c:\documents and settings\moonsond\my documents\visual studio 2005\projects\opengl00\opengl00\opengl00.cpp(115) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [21]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>c:\documents and settings\moonsond\my documents\visual studio 2005\projects\opengl00\opengl00\opengl00.cpp(171) : error C2440: '=' : cannot convert from 'const char [16]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>c:\documents and settings\moonsond\my documents\visual studio 2005\projects\opengl00\opengl00\opengl00.cpp(175) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [37]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>c:\documents and settings\moonsond\my documents\visual studio 2005\projects\opengl00\opengl00\opengl00.cpp(193) : error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [16]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>c:\documents and settings\moonsond\my documents\visual studio 2005\projects\opengl00\opengl00\opengl00.cpp(197) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [23]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>Build log was saved at "file://c:\Documents and Settings\moonsond\My Documents\Visual Studio 2005\Projects\opengl00\opengl00\Debug\BuildLog.htm" 1>opengl00 - 8 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== |
__________________
"Что вы знаете, ничтожные ?! Что вы видели, чем вы живёте и дышите? что есть ваши ложные идолы, ваши продажные суждения о мире?
Умойтесь кровью своей и разорвите плоть грешную свою; конец ваших пресмыканий близок. Ибо наша религия - U, наша стихия - огонь, и наша богиня - Вандора!"
__________________
Рассыпалась соль - к ссоре.
Рассыпался сахар - к миру.
Рассыпался кокаин - к феерическим ощущениям и фантасмагорическим видениям.
Ласточки низко летают - будет дождь.
Коровы низко летают - рассыпался кокаин.
__________________
"Что вы знаете, ничтожные ?! Что вы видели, чем вы живёте и дышите? что есть ваши ложные идолы, ваши продажные суждения о мире?
Умойтесь кровью своей и разорвите плоть грешную свою; конец ваших пресмыканий близок. Ибо наша религия - U, наша стихия - огонь, и наша богиня - Вандора!"
ты там где нужно широкую строчку передвать передаешь обычную %)
используй MessageBoxA вместо MessageBoxW =)
__________________
Рассыпалась соль - к ссоре.
Рассыпался сахар - к миру.
Рассыпался кокаин - к феерическим ощущениям и фантасмагорическим видениям.
Ласточки низко летают - будет дождь.
Коровы низко летают - рассыпался кокаин.
Вот исходник этого урока - весь код от его автора, от самого Visual C++ я оставил только
// opengl00.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "opengl00.h" #define MAX_LOADSTRING 100 |
#include <windows.h> // Заголовочный файл для Windows #include <gl\gl.h> // Заголовочный файл для OpenGL32 библиотеки #include <gl\glu.h> // Заголовочный файл для GLu32 библиотеки #include <gl\glaux.h> // Заголовочный файл для GLaux библиотеки static HGLRC hRC; // Постоянный контекст рендеринга static HDC hDC; // Приватный контекст устройства GDI BOOL keys[256]; // Массив для процедуры обработки клавиатуры GLvoid InitGL(GLsizei Width, GLsizei Height) // Вызвать после создания окна GL { glClearColor(1.0f, 0.0f, 0.0f, 0.0f); // Очистка экрана в черный цвет glClearDepth(1.0); // Разрешить очистку буфера глубины glDepthFunc(GL_LESS); // Тип теста глубины glEnable(GL_DEPTH_TEST);// разрешить тест глубины glShadeModel(GL_SMOOTH);// разрешить плавное цветовое сглаживание glMatrixMode(GL_PROJECTION);// Выбор матрицы проекции glLoadIdentity(); // Сброс матрицы проекции gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); // Вычислить соотношение геометрических размеров для окна glMatrixMode(GL_MODELVIEW);// Выбор матрицы просмотра модели } GLvoid ReSizeGLScene(GLsizei Width, GLsizei Height) { if (Height==0) // Предотвращение деления на ноль, если окно слишком мало Height=1; glViewport(0, 0, Width, Height); // Сброс текущей области вывода и перспективных преобразований glMatrixMode(GL_PROJECTION);// Выбор матрицы проекций glLoadIdentity(); // Сброс матрицы проекции gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); // Вычисление соотношения геометрических размеров для окна glMatrixMode(GL_MODELVIEW); // Выбор матрицы просмотра модели } GLvoid DrawGLScene(GLvoid) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // очистка Экрана и буфера глубины glLoadIdentity(); // Сброс просмотра } LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { RECT Screen; // используется позднее для размеров окна GLuint PixelFormat; static PIXELFORMATDESCRIPTOR pfd= { sizeof(PIXELFORMATDESCRIPTOR), // Размер этой структуры 1, // Номер версии (?) PFD_DRAW_TO_WINDOW |// Формат для Окна PFD_SUPPORT_OPENGL |// Формат для OpenGL PFD_DOUBLEBUFFER,// Формат для двойного буфера PFD_TYPE_RGBA, // Требуется RGBA формат 16, // Выбор 16 бит глубины цвета 0, 0, 0, 0, 0, 0,// Игнорирование цветовых битов (?) 0, // нет буфера прозрачности 0, // Сдвиговый бит игнорируется (?) 0, // Нет буфера аккумуляции 0, 0, 0, 0, // Биты аккумуляции игнорируются (?) 16, // 16 битный Z-буфер (буфер глубины) 0, // Нет буфера траффарета 0, // Нет вспомогательных буферов (?) PFD_MAIN_PLANE, // Главный слой рисования 0, // Резерв (?) 0, 0, 0 // Маски слоя игнорируются (?) }; switch (message) // Тип сообщения { case WM_CREATE: hDC = GetDC(hWnd); // Получить контекст устройства для окна PixelFormat = ChoosePixelFormat(hDC, &pfd); // Найти ближайшее совпадение для нашего формата пикселов if (!PixelFormat) { MessageBox(0,"Can't Find A Suitable PixelFormat.","Error",MB_OK|MB_ICONERROR); PostQuitMessage(0); // Это сообщение говорит, что программа должна завершится break; // Предтовращение повтора кода } if(!SetPixelFormat(hDC,PixelFormat,&pfd)) { MessageBox(0,"Can't Set The PixelFormat.","Error",MB_OK|MB_ICONERROR); PostQuitMessage(0); break; } hRC = wglCreateContext(hDC); if(!hRC) { MessageBox(0,"Can't Create A GL Rendering Context.","Error",MB_OK|MB_ICONERROR); PostQuitMessage(0); break; } if(!wglMakeCurrent(hDC, hRC)) { MessageBox(0,"Can't activate GLRC.","Error",MB_OK|MB_ICONERROR); PostQuitMessage(0); break; } GetClientRect(hWnd, &Screen); InitGL(Screen.right, Screen.bottom); break; case WM_DESTROY: case WM_CLOSE: ChangeDisplaySettings(NULL, 0); wglMakeCurrent(hDC,NULL); wglDeleteContext(hRC); ReleaseDC(hWnd,hDC); PostQuitMessage(0); break; case WM_KEYDOWN: keys[wParam] = TRUE; break; case WM_KEYUP: keys[wParam] = FALSE; break; case WM_SIZE: ReSizeGLScene(LOWORD(lParam),HIWORD(lParam)); break; default: return (DefWindowProc(hWnd, message, wParam, lParam)); } return (0); } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; // Структура сообщения Windows WNDCLASS wc; // Структура класса Windows для установки типа окна HWND hWnd;// Сохранение дискриптора окна wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wc.lpfnWndProc = (WNDPROC) WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = "OpenGL WinClass"; if(!RegisterClass(&wc)) { MessageBox(0,"Failed To Register The Window Class.","Error",MB_OK|MB_ICONERROR); return FALSE; } hWnd = CreateWindow( "OpenGL WinClass", "Jeff Molofee's GL Code Tutorial ... NeHe '99", // Заголовок вверху окна WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, 0, // Позиция окна на экране 640, 480, // Ширина и высота окна NULL, NULL, hInstance, NULL); if(!hWnd) { MessageBox(0,"Window Creation Error.","Error",MB_OK|MB_ICONERROR); return FALSE; } DEVMODE dmScreenSettings; // Режим работы memset(&dmScreenSettings, 0, sizeof(DEVMODE)); // Очистка для хранения установок dmScreenSettings.dmSize = sizeof(DEVMODE); // Размер структуры Devmode dmScreenSettings.dmPelsWidth = 640; // Ширина экрана dmScreenSettings.dmPelsHeight = 480; // Высота экрана dmScreenSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; // Режим Пиксела ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN); // Переключение в полный экран ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); SetFocus(hWnd); while (1) { // Обработка всех сообщений while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { if (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { return TRUE; } } DrawGLScene(); // Нарисовать сцену SwapBuffers(hDC); // Переключить буфер экрана if (keys[VK_ESCAPE]) SendMessage(hWnd,WM_CLOSE,0,0); // Если ESC - выйти } } |
__________________
"Что вы знаете, ничтожные ?! Что вы видели, чем вы живёте и дышите? что есть ваши ложные идолы, ваши продажные суждения о мире?
Умойтесь кровью своей и разорвите плоть грешную свою; конец ваших пресмыканий близок. Ибо наша религия - U, наша стихия - огонь, и наша богиня - Вандора!"
А я бы на вашем месте, товарищ, держался бы подальше от аццкого С++ и писал бы на чистом Си.
Ибо С++ сакс и маздай, а Си рулит.
А у зимера - день рождения!
Временная зона GMT. Текущее время 06:38. | Страницы (3): [1] 2 3 » Показать все 45 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024