Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2013, 17:13   #51
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
Лампочка я не пойму в чем дело?

я не пойму в чем дело?

у меня падает прога так
Код:
glColorPointer(1, GL_UNSIGNED_INT,sizeof(MODEL_VERTEX), &model->vertexes->color);
и не падает так
Код:
glColorPointer(4, GL_UNSIGNED_BYTE,sizeof(MODEL_VERTEX), &model->vertexes->color);
Структура унифицированного вертекса для obj-парсера и raw данных из блендера.
Код:
typedef struct MODEL_VERTEX 
{
	VECTOR3F pos;
	VECTOR3F norm;
	VECTOR2F tex;
	//VECTOR2F tex2;
	union 
	{
		struct 
		{
			unsigned char r;
			unsigned char g;
			unsigned char b;
			unsigned char a;
		} rgba;
		unsigned int color;
	
	};

} MODEL_VERTEX, *PMODEL_VERTEX;
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 23.07.2013, 21:48   #52
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

в любой работе, самое важное - чтение и перечитывание мануалов.
http://www.opengl.org/sdk/docs/man2/...lorPointer.xml

все должно быть так
Код:
glColorPointer(4, GL_UNSIGNED_BYTE, 0, &model->vertexes->color);
f.hump вне форума Ответить с цитированием
Старый 24.07.2013, 05:45   #53
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Спасибо, f.hump
нашел да
Цитата:
Parameters
size
Specifies the number of components per color. Must be 3 or 4. The initial value is 4.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 29.07.2013, 06:27   #54
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
Лампочка

Добавил недавно камерных функций гроздь.
Камера у меня структура с векторами и матрицами.
Код:
typedef struct CAMERA 
{
	float fov;
	float znear;
	float zfar;
	float aspect;

	VECTOR3F position;
	VECTOR3F look;
	VECTOR3F up;

	MATRIX4 perspective;
	MATRIX4 view;

	int use2dView;




} CAMERA, *PCAMERA;

void engineCameraUpdateView(CAMERA *c);
void engineCameraUpdateProjection(CAMERA *c);

void engineCameraMoveZ(CAMERA *c, float delta);
void engineCameraMoveX(CAMERA *c, float delta);
void engineCameraMoveY(CAMERA *c, float delta);

void engineCameraUpdateModelView( CAMERA *c, MATRIX4 *models_tranforms );

void engineCameraRotateView(CAMERA *c, float x, float y, float z, float delta);
void engineCameraUpdateMouseLook(CAMERA *c);

Так задается направление движения в void Keys(int key, int down) .
Код:
	if (key == 87)
		moveFb = down ? 1 : 0;
		
	if (key == 83)
		moveFb = down ? -1 : 0;

	if (key == 65)
		moveRl = down ? -1 : 0;

	if (key == 68)
		moveRl = down ? 1 : 0;

	if (key == 32)
		moveUd = down ? 1 : 0;

	if (key == 90)
		moveUd = down ? -1 : 0;
так просчитываются перемещения перед прорисовкой в void DrawFrame(float dt) процедуре.
Код:

	if (moveFb !=0)
		engineCameraMoveZ(&mySceneView, moveFb * 10.0f * engineGetDeltaTime());

	if (moveRl !=0)
		engineCameraMoveX(&mySceneView, moveRl * 10.0f * engineGetDeltaTime());

	if (moveUd != 0)
		engineCameraMoveY(&mySceneView, moveUd * 10.0f * engineGetDeltaTime());



	engineCameraUpdateMouseLook(&mySceneView);

	// Draw something
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
А с мыша глазо поворачавалкой какой-то косяк.
Походу нужно как-то ограничивать оси вращения.
А иначе что-то странное порой выходит.
Код:
void engineCameraUpdateMouseLook(CAMERA *c) 
{
	const float maxUpLook = 1.0f;
	const float maxDownLook = 1.0f;

	static int isNotInitedView = 1;
	static HWND hWnd;

	static float rotx = 0;
	static float roty = 0;
	
	RECT windowSize;
	int w = 0;
	int h = 0;
	POINT mousePosition;
	POINT windowCenter;
	POINT globalWindowCenter;
	float stepsX;
	float stepsY;

	hWnd = (HWND) engineGetWindowHandle();

	GetClientRect(hWnd, &windowSize);

	w = windowSize.right - windowSize.left;
	h = windowSize.bottom - windowSize.top;

	GetCursorPos(&mousePosition);
	
	windowCenter.x = w / 2;
	windowCenter.y = h / 2;

	globalWindowCenter = windowCenter;

	ClientToScreen(hWnd, &globalWindowCenter);

	if (isNotInitedView) 
	{
		engineMouseMoveAt(windowCenter.x, windowCenter.y);
		isNotInitedView = 0;
		return;
	}

	if ((globalWindowCenter.x == mousePosition.x) && (globalWindowCenter.y == mousePosition.y)) return;

	stepsX = (float) (globalWindowCenter.x - mousePosition.x) * 0.003f;
	stepsY = (float) (globalWindowCenter.y - mousePosition.y) * 0.003f;


	engineCameraRotateView(c, 0, 1, 0, stepsX * .5f);
	engineCameraRotateView(c, 1, 0, 0, stepsY * .5f);


	engineMouseMoveAt(windowCenter.x, windowCenter.y);
}
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки

Последний раз редактировалось intmain; 29.07.2013 в 06:43. Причина: 42
intmain вне форума Ответить с цитированием
Старый 29.07.2013, 12:20   #55
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Это все, конечно, здорово. Но вот в первом посте темы я не увидел, чтобы ты написал для каких целей создаешь движок и описание его функционала(пусть и не реализованного). А ведь сие и должно было быть в первом посте, а не кусок кода...вообщем движение в слепую в темной комнате. Всю тему не читал.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 29.07.2013, 13:00   #56
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Цитата:
я не увидел
Цитата:
для каких целей создаешь движок
из первого.
Цитата:
я пишу свой эпически-отстойный движек для моей эпически-отстойной игрушки
Цитата:
и описание его функционала(пусть и не реализованного).
какой-нибудь изъезженный набор функций загрузить то-то, нарисовать то-то...

Цитата:
А ведь сие и должно было быть в первом посте
привык всегда все делать через ж.. ) и тут решил особо не оригинальничать.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 01.08.2013, 07:53   #57
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Плин, с вертикальной ориентацией камеры так я и не полял что за косяк.
Поле зрения вылазит постепенно из заданного ограничения, когда качаешь камерой вверх - вниз, через некоторое время пола не видишь пялишся только на потолок.

Мне интересно кто как делал камеру, как ограничивали поля обзора ?
Вы манипуляции на векторах или на матрицах делали?
Ясно что в финале матрица трансформаций нужна, но я про промежуточные вычисления, на векторах вроде как удобно.
И еще вопрос если юзать для камеры - вектора, их все нужно выдерживать в одном пространственном представлении?
Допустим: что вектор позиции в мир. координатах что взгляда, что вектор вверх все они в мир координатах ?
У меня была мысль сделать в мир координатах только вектор позиции. остальные в локальных координатах самой камеры.
т.е финальный вектор взгляда = позиция + локальный взгляда
а финальный вектор вверх = позиция + локальный вектор вверх.
и потом из них стоиться матрица трансформаций камеры.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 01.08.2013, 19:22   #58
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Не писал никогда камеру на голом опенгле, а если понадобится, то легко найду полуготовое и доработаю под себя, например здесь можно взять, вроде адекватненько http://programmersforum.ru/showthread.php?t=240865
У меня камера делается обёрткой над движком, в движке есть понятие матрицы, и у рендера она есть (условно говоря мировая матрица), всё просто, хочешь сдвинуть камеру - измени матрицу, мой класс-обёртка камеры содержит пачку параметров - всякие позиции, скорости, углы и т.п., эти параметры обсчитываются в матрицу, и при рендеринге она устанавливается (насколько знаю, аналогично gl_LoadMatrix). Камер, как экземпляров класса может быть много. Также в движке есть установка перспективы, но я её меняю не чаще чем 1 раз при смене сцен, возможно, потом зацеплю в класс тоже, для динамических эффектов.
phomm вне форума Ответить с цитированием
Старый 02.08.2013, 06:39   #59
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Это все понятно.
Если наглядно то проблема вот в чем.
1.jpg

Из изначальных ограничений с цифрой №1.
Камера лочится в ограничения №2.
Как бы имеется эффект смещения поля обзора, причем постепенное. Если часто будите мотать головой вверх, то потом пола не увидите.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки

Последний раз редактировалось intmain; 02.08.2013 в 06:47.
intmain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Fail fast Arween Помощь студентам 0 31.05.2012 00:22
Fail Prince En Помощь студентам 0 07.03.2011 15:27
string epic fail Red_Line Общие вопросы C/C++ 5 09.02.2011 17:43
мой движок для текствых игр Juffin Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 10.06.2009 18:24
Помогитеу становить движок на сайт. Движок Joomla acmilan WordPress и другие CMS 2 01.04.2009 11:26