Forums.Avtograd.Ru: Мультимедийное ПО - Forums.Avtograd.Ru

Перейти к содержимому

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Мультимедийное ПО OpenGL, DirectX, алгоритмы, звук и т.д.

#1 Пользователь офлайн   cheerduck

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 123
  • Регистрация: 01 Ноябрь 07

Отправлено 18 Ноябрь 2007 - 14:55

вообще очень предлагаю тут отписываться заинтересованым
развивая тему вот вопрос, который покоя не даёт:
как можно средствами OpenGL выводить текст? (не текстурами) :rolleyes:
0


  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Другие ответы в этой теме

#2 Пользователь офлайн   Den

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 246
  • Регистрация: 01 Ноябрь 07

Отправлено 18 Ноябрь 2007 - 15:08

glPrint();

?!
0

#3 Пользователь офлайн   cheerduck

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 123
  • Регистрация: 01 Ноябрь 07

Отправлено 18 Ноябрь 2007 - 16:49

не нашел такой штуки :) может у меня GL старый?)
0

#4 Пользователь офлайн   Den

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 246
  • Регистрация: 01 Ноябрь 07

Отправлено 18 Ноябрь 2007 - 22:36

есть кароче 3-и урока NeHe ...
1. Растровые шрифты. (Использование TrueType шрифтов в Вашей программе с OpenGL.)
2. Векторные шрифты. (Вывод векторных шрифтов с помощью WGL-функции из Windows API.)
3. Текстурные шрифты. (Специальные шрифты с наложением текстуры. Автогенерация текстурных координат.)
если надо могу скинуть ...
0

#5 Пользователь офлайн   Den

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 246
  • Регистрация: 01 Ноябрь 07

Отправлено 19 Ноябрь 2007 - 07:03

кто знает как грузить сразу целую 3D модель, к примеру сделанную в 3DsMax, собственно с его расширением ...
а не через загрузку файла *.х или *.txt с описанием каждой вершины ?!
0

#6 Пользователь офлайн   Den

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 246
  • Регистрация: 01 Ноябрь 07

Отправлено 21 Ноябрь 2007 - 00:55

Просмотр сообщенияDen (19.11.2007, 8:03):

кто знает как грузить сразу целую 3D модель, к примеру сделанную в 3DsMax, собственно с его расширением ...
а не через загрузку файла *.х или *.txt с описанием каждой вершины ?!

?? мм ... никто не в курсе ??
0

#7 Пользователь офлайн   Korben Dallas

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 60
  • Регистрация: 01 Ноябрь 07

Отправлено 22 Ноябрь 2007 - 01:17

Den
Напиши конвертер.

Кстати вы какой OpenGL юзаете?
От ATi or NVidia ???
Сила воображения побеждает силу власти
0

#8 Пользователь офлайн   Den

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 246
  • Регистрация: 01 Ноябрь 07

Отправлено 22 Ноябрь 2007 - 01:47

да этих конвертеров как новоза у баб тони в деревне ... :lol:
меня интересует сама функция загрузки ... если таковая имеется ...

з.ы. я юзаю институтский OGL на пару с институтским Dev-cpp ... :)
хз чейный он ... ati ... nVidia ... :lol:
0

#9 Пользователь офлайн   Copybook

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 04 Декабрь 2007 - 18:44

Я работаю в DEV-CPP. Не получается изменить позицию камеры.
Вот мой код:

Цитата

#include <windows.h>
#include <GL/glu.h>
#include <GL/gl.h>
#include <gl/GLAUX.h>
#include <math.h>
//#include <gl/stdafx.h>

void CoordLines();
void MyCyrcle (float a,float b, float c,float BegI,float EndI,float StepI);
void display();
void resize(int width,int height);
void reset();
HDC hDC = NULL;
HGLRC hRC = NULL;
int a=0;
float _x_=0,_y_=0,_z_=0,_x=0,_y=0,_z=0,x2=15,y2=15,z2=15;

/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */


wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS|CS_HREDRAW | CS_VREDRAW | CS_OWNDC; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

wincl.hIcon = LoadIcon (NULL, IDI_HAND);
wincl.hIconSm = LoadIcon (NULL, IDI_HAND);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;

wincl.hbrBackground = (HBRUSH) WHITE_BRUSH;


if (!RegisterClassEx (&wincl))
return 0;


hwnd = CreateWindowEx (
0,
szClassName,
"Engine. Experimental Edition",
WS_OVERLAPPEDWINDOW|WS_EX_APPWINDOW|WS_EX_CLIENTEDGE ,
100,
100,
600,
500,
HWND_DESKTOP,
NULL, /
hThisInstance,
NULL
);

/* Make the window visible on the screen */
GLuint PixelFormat; // дескриптор создаваемого формата пиксела
static PIXELFORMATDESCRIPTOR pfd=
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW |
PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
32, /
0, 0, 0, 0, 0, 0,
0,
0,
0,
0, 0, 0, 0,
32, 0,
0,
PFD_MAIN_PLANE,
0,
0, 0, 0
};

hDC=GetDC(hwnd);
PixelFormat=ChoosePixelFormat(hDC,&pfd);
SetPixelFormat(hDC,PixelFormat,&pfd);
hRC=wglCreateContext(hDC);
wglMakeCurrent(hDC,hRC);

ShowWindow (hwnd, nFunsterStil);
glEnable(GL_DEPTH_TEST);

/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}

/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}


/* This function is called by the Windows function DispatchMessage() */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{ case WM_CHAR: switch ((TCHAR)wParam) {
case '2':_z-=1.3;break;
case '6':_x-=1.3; break;
case '4':_x+=1.3; break;
case '8':_z+=1.3; break;
case '7':_y-=1.3; break;
case '9':_y+=1.3; break;
case '1':_y_-=1.3; break;
case '3':_y_+=1.3; break;
case '5':; break;
case '0':; break;
case 'w':x2+=1;SendMessage(hwnd,WM_PAINT,0,0);break;
default:;}
break;
case WM_DESTROY:PostQuitMessage (0);break;
case WM_SIZE:resize(LOWORD(lParam),HIWORD(lParam));break;
case WM_PAINT:display();break;
default:return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;


}


void display(void)
{
glClearColor(0.75f, 0.75f, 0.75f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); /*очистка буферов цвета и глубины и передача битов в экранный буфер*/

glPushMatrix();
glRotatef(_x_, 1.0f, 1.0f, 0.0f);
glRotatef(_y_, 0.0f, 1.0f, 0.0f);
glRotatef(_z_, 1.0f, 0.0f, 1.0f);
CoordLines();
glPopMatrix();



SwapBuffers(hDC);
}


void MyCyrcle (float a,float b, float c,float BegI,float EndI,float StepI,int Type,
float UOC,float UIC,float PIC,float POC,float UOS,float UIS,float PIS,float POS)
{static const double pi=3.1415926535897932384626433832795;

glBegin(GL_POINTS);
glColor3f(a,b,c);
for (float i=BegI;i<pi*EndI;i+=StepI)
{switch (Type){case 1:glVertex3f(0,UOC*cos(i*UIC+PIC)+POC,UOS*sin(i*UIS));break;
case 2:glVertex3f(UOS*sin(i*UIS),0,UOC*cos(i*UIC+PIC)+POC);break;
case 3:glVertex3f(0,UOS*sin(i*UIS),UOC*cos(i*UIC+PIC)+POC);break;}
}

glEnd();}

void CoordLines()
{glBegin(GL_LINES);

for(int i=-100;i<=100;i++)
{ glColor3f(0,0,0.5);
glVertex3f(-100+_x,0+_y,i+_z);
glVertex3f(100+_x,0+_y,i+_z);
glVertex3f(i+_x,0+_y,100+_z);
glVertex3f(i+_x,0+_y,-100+_z); }
glEnd(); }

void resize(int width,int height)
{
glViewport ( 0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0,(GLfloat)width/(GLfloat)height,0.1f,300);
gluLookAt(x2,y2,z2, 0,5,0, 0,1,0);
glMatrixMode(GL_MODELVIEW);
}



При попытке изменения позиции камеры при помощи переменной в glLookAt окно не прорисовывается. Оно прорисовывается только если изменить размер окна вручную. Как мне сделать чтобы это прорисовывалось. Пытался делать SendMessage(hwnd,WM_PAINT,0,0) - Выдает ошибку

		C:\Dev-Cpp\Engine\main.cpp				  In function `LRESULT WindowProcedure(HWND__*, UINT, WPARAM, LPARAM)':
134	  C:\Dev-Cpp\Engine\main.cpp				  stray '\24' in program
	   C:\Dev-Cpp\Engine\Makefile.win			 [Build Error]  [main.o] Error 1


Помогите заставить окно перерисовываться всякий раз когда изменяется переменные х2,у2.z2. (а они меняются в свою очередь при нажатии на определунную клавишу.)
0

#10 Пользователь офлайн   Copybook

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 04 Декабрь 2007 - 18:50

Просмотр сообщенияDen (22.11.2007, 1:47):

да этих конвертеров как новоза у баб тони в деревне ... :lol:
меня интересует сама функция загрузки ... если таковая имеется ...

з.ы. я юзаю институтский OGL на пару с институтским Dev-cpp ... :)
хз чейный он ... ati ... nVidia ... :lol:


напиши функцию сам.
0

#11 Пользователь офлайн   Pasha

  • Активный пользователь
  • PipPipPip
  • Группа: Модераторы
  • Сообщений: 806
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Декабрь 2007 - 09:59

Точкка входа в процедуру auxInitWindowА не найдена в библиотеке DLL GLAUX.DLL. Кто-нибудь знает вчём проблема? У др. работает и в примерах из книжек эта ф-я есть (auxInitWindow("ххх");). Я уже и др. библиотеку скачал. Пользуюсь DEVом.
0

#12 Пользователь офлайн   XoTT@Bb)4

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 86
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Декабрь 2007 - 17:32

Просмотр сообщенияPasha (6.12.2007, 10:59):

Точкка входа в процедуру auxInitWindowА не найдена в библиотеке DLL GLAUX.DLL. Кто-нибудь знает вчём проблема? У др. работает и в примерах из книжек эта ф-я есть (auxInitWindow("ххх");). Я уже и др. библиотеку скачал. Пользуюсь DEVом.


Пашок, а это в какой лабе??...
попробуй glaux.dll помести в папку с самой прогой может поможет...
Ремонт компьютеров и оргтехники, заправка картриджей.
ООО "Эксперт - Сервис", тел 35-83-81, Приморский 31.
0

#13 Пользователь офлайн   Pasha

  • Активный пользователь
  • PipPipPip
  • Группа: Модераторы
  • Сообщений: 806
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Декабрь 2007 - 18:20

Это индивидуальное задание, по которому будет делаться задание для остальных.
У меня всё подключено и библиотеки находятся как в sys. так и в папке с проектом. Думал библиотека битая, но скаченная новая, проблему не решила.
Ф-я, которой нехватает, отвечает за построение окна. Таким образом, пишу одну строчку, вместо страницы как у нас.
Так делают все здравомыслящие, если конечно не требуется особое окно.
0

#14 Пользователь офлайн   XoTT@Bb)4

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 86
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Декабрь 2007 - 20:19

ээм... ту тогда я покурю в сторонке!... ))
Ремонт компьютеров и оргтехники, заправка картриджей.
ООО "Эксперт - Сервис", тел 35-83-81, Приморский 31.
0

#15 Пользователь офлайн   Pasha

  • Активный пользователь
  • PipPipPip
  • Группа: Модераторы
  • Сообщений: 806
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Декабрь 2007 - 16:58

Виноват был DEV. В V C++ всё работает.
0

#16 Пользователь офлайн   Dr.V1.3

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 116
  • Регистрация: 15 Ноябрь 07

Отправлено 12 Декабрь 2007 - 23:20

oGL и DevCPP?
ВУИТ:)
0

#17 Пользователь офлайн   XoTT@Bb)4

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 86
  • Регистрация: 01 Ноябрь 07

Отправлено 14 Декабрь 2007 - 18:06

Просмотр сообщенияDr.V1.3 (13.12.2007, 0:20):

oGL и DevCPP?
ВУИТ:)


он самый..))
Ремонт компьютеров и оргтехники, заправка картриджей.
ООО "Эксперт - Сервис", тел 35-83-81, Приморский 31.
0

#18 Пользователь офлайн   -=MG=-

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 87
  • Регистрация: 30 Декабрь 07

Отправлено 16 Февраль 2008 - 03:11

Просмотр сообщенияDen (19.11.2007, 7:03):

кто знает как грузить сразу целую 3D модель, к примеру сделанную в 3DsMax, собственно с его расширением ...
а не через загрузку файла *.х или *.txt с описанием каждой вершины ?!

Хоть прошло уже 3 месяца, отвечу)))

Когда-то я писал программу на Дельфе, использующую 3Д модели из Макса. После долгих мучений,
пришёл к следующей схеме:
1) в ЗдМаксе, на встроенном скриптовом языке, написал скрипт, который создаёт паскалевский модуль.
Модуль этот простейший, там просто объявляются константные массивы из вершин, текстур и т.п.
2) потом в своей программе, подключаю полученный модуль и выполняю стандартные функции отрисовки
объектов по массиву вершин. Объектов можно навтыкать много, остаётся только их имена указать в функции.

Таким образом я получил довольно шуструю программу, без лишних файлов. Объекты переносятся с текстурами,
правильным освещением, прозрачностью, эффектами отражения поверхностей. Программа эта - примитивная 3Д игра.

Попытки загрузить модель из 3ДМакс-файла наткнулись на одну большую проблему:
формат файлов 3ДМакса - комерческая тайна и нигде не описан.
Есть правда энтузиасты, которые его дешифровывают. Успехи есть. У меня даже где-то валяется
пример программы, загружающей такие файлы. Но там много сложностей и недоработок.
Вообще если модель простая, то можно пытаться. Универсальную программу написать, пока, не реально.
реальность субъективна
0

#19 Пользователь офлайн   Den

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 246
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 17:51

Просмотр сообщения-=MG=- (16.2.2008, 4:11):

Хоть прошло уже 3 месяца, отвечу)))

всегда интересно почитать мнения тех, кто сталкивался, а не "слышал" ;) , но надобность уже отпала ))
но всёравно спасибо !! ))
0

#20 Пользователь офлайн   sirfstar

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 12 Июль 10

Отправлено 08 Сентябрь 2010 - 15:26

Требуется рисовать в чужом полноэкранном ddraw приложении и есть исходники прокси для ddraw. Как лучше всего это сделать? Можно прямо в дллке рисовать после создания поверхности? Времени на изучение dx нет.
0

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей