GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (256 стр.)

Сообщения на форуме пользователя Andrey (256 стр.)

std:vector.erase ошибка20 авг. 200411:35#7
Acces Violation - Я так и думал
>сли бы оставил просто objects[active_object], то ничего не работало бы, так как >ужен правильный поинтер.

Это и Ежу понятно

>Ошибка вроде Acces Violation - Вроде или точно? Если точно то как я и думал
Ты не правильно с указателем работаешь подробне смотри код если не хочешь суда его постить.Попробуй в пошаговом режиме.Скажи при отладке значения адреса
&objects[active_object] он не должен быть типа 0xddddddd...Если он правильный
то такая ошибка может возникать если ты пытаешься удалить уже удаленный
объект.

т.е типа такого  в каком -то месте программы

     delete pinter;
    //.....
    //Теперь опять
     delete pinter;    //Вот тут то и приехали

В таких случаях я делаю так и так можно избежать многих ошибок.
Я думаю что с этим ты знаком :)

if (pointer) {
  delete pointer;
  pointer = NULL;
}

Проверь попробуй этот указатель

Правка: 20 авг. 2004 11:38

std:vector.erase ошибка20 авг. 200410:59#5
irek
&objects[active_object] - это корректный адрес по нему находится то что тебе нужно? Это не мусор? Какая ошибка выдается?

напиши прямо как выдается при работе,если не получиться то попробуй это просмотреть при отладке.Если будет адрес типа 0xddddddd.... или что - нибудь такое
то это мусор.
У меня такое ошущение что это типичная ошибка работы с указателями

Правка: 20 авг. 2004 11:01

std:vector.erase ошибка20 авг. 200410:45#3
irek

>objects.erase(&objects[active_object]); //удаление уз списка

objects[active_object] - поподробней что в внутри objects т.е. из чего состоит
                                      класс GameObject (или структура)

А пока по коду все прозрачно и просто.

Правка: 20 авг. 2004 10:45

Вопрос по кватернионам20 авг. 200410:20#1
Ну что больше ни кто не может мне помочь??
Вопросы по движку20 авг. 20049:49#16
Zemedelec
>Командъ ети должнъ бъть аналогами команд к игре (через меню скажем)
Т.е. что-то типа дублирования?

А какой класс тогда должен с меню работать?Можн оли эту задау на консоль возложить?

Правка: 20 авг. 2004 9:50

std:vector.erase ошибка20 авг. 20049:47#1
irek
Надо код глянуть может ты не на тот указатель ссылаешься?
Вопросы по движку19 авг. 200421:29#14
-= Freeze =-
Вот теперь я начинаю въезжать
Вопрос по кватернионам19 авг. 200420:33#0
Привет всем !!!
Начал кватерионы осваивать.

Пробую это к камере применить.

итак Установка матрицы камеры:

//...
 Matrix -> Matrix[3][0] = Position -> x; //Позиция по оси z
 Matrix -> Matrix[3][1] = Position -> y;//Позиция по оси y
 Matrix -> Matrix[3][2] = Position -> z;//Позиция по оси z
 Matrix -> Matrix[0][3] = 0;
 Matrix -> Matrix[1][3] = 0;
 Matrix -> Matrix[2][3] = 0;
 Matrix -> Matrix[3][3] = 1;
 quaternion -> CreatMatrix(*Matrix); //Описано ниже
//....

Этод метод создает матрицу вращения из кватерниона:

void Quaternion::CreatMatrix(Matrix4x4 &Matrix) const
{
	Matrix.Matrix[0][0] = 1.0f - 2.0f * ( y * y + z * z );
	Matrix.Matrix[0][1] = 2.0f * ( x * y - w * z );
	Matrix.Matrix[0][2] = 2.0f * ( x * z + w * y );

		// 2nd row
	Matrix.Matrix[1][0] = 2.0f * ( x * y + w * z );
	Matrix.Matrix[1][1] = 1.0f - 2.0f * ( x * x + z * z );
	Matrix.Matrix[1][2] = 2.0f * ( y * z - w * x );

		// 3rd row
	Matrix.Matrix[2][0] = 2.0f * ( x * z - w * y );
	Matrix.Matrix[2][1] = 2.0f * ( y * z + w * x );
	Matrix.Matrix[2][2] = 1.0f - 2.0f * ( x * x + y * y );
}


Вращение камеры делаю так:

void Camera::Rotate(Point2D &point)
{
   const GLfloat kx = 30; //Масштаб по оси  x
   const GLfloat ky = 30;//Масштаб по оси y
   anX = point.r0 / kx;
   anY = point.r1 / ky;
   //...
   AngleX += anX;
   AngleY += anY;
  //..
  quaternion -> CreateFromAxisAngle(0, 1, 0, AngleX);//Описано ниже
  //Пробовал и так
  //Quaternion q;
  //Продолжение через строчку
  quaternion -> CreateFromAxisAngle(1, 0, 0, AngleY);//Описано ниже
  //q.CreateFromAxisAngle(1, 0, 0, AngleY);//Описано ниже
  //*quaternion = *quaternion + q;
   //*quaternion = *quaternion * q;

  //...
}

void Quaternion::CreateFromAxisAngle(GLfloat X, GLfloat Y, GLfloat Z, GLfloat angle)
{
      GLfloat Angle = GLfloat((angle / 180.0) * Pi);
      GLfloat result = GLfloat(sin(Angle / 2.0f));

      w = GLfloat(cos(Angle / 2.0f));
      x = GLfloat(X * result);
      y = GLfloat(Y * result);
      z = GLfloat(Z * result);
      Normalise();
}

Далее при отрисовке идет

//...
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glM.ultMatrixf(Matrix -> GetMatrix());//Умножение на видовую матрицу
//..

В общем камера у меня дергается (как бы покачивается с нарастающей амплитудой)Пытается вращаться в плоскости y0z но не правильно

Скажите что  делаю не так заранее спасибо

С Уважением Андрей.

Правка: 20 авг. 2004 10:19

Вопросы по движку19 авг. 200418:40#12
-= Freeze =-
Ну еще расскажешь?
Вопрос по DirectInput19 авг. 200414:16#19
LIVe
Я делал тоже само у меня еще и ошибки указываются для какого устройства.А там просто ворзвращается false.
Alex-y
Я так сделал он по прежнему ошибка в лог файле:

Правка: 19 авг. 2004 14:19

Вопросы по движку19 авг. 200410:06#11
-= Freeze =-
Т.е. Я так понял команду можно создать просто играя в игру?Можно во время отладки и тестирования?Но эта команда будет существовать тоько пока будет запущен движок?
Она тогда будет храниься где-то в памяти.Значит есть команды "жестко зашитые в движок"
и есть которые могут добавляться когда угодно.А еще их же все можно хранить в файле?
или не все.
Вопрос по DirectInput19 авг. 20048:59#18
LIVe
Присылай должно помочь.
Вопросы по движку18 авг. 200421:13#9
-= Freeze =-
Что значит в любой момент?а как этой команде дейстаие прописывать прямо при добавлении типа ввод параметров?

Правка: 18 авг. 2004 21:14

Вопросы по движку18 авг. 200420:56#7
-= Freeze =-
Вот спасибо теперь мне все понятно я так что-то представлял.Похоже в том движке так и сделано про который ты говорил.

А список команд постоянный,т.е. в начале работы мы туда заносим необходимые команды,а потом вы их выполняем, если команда правильная и будет найдена в списке, в противном случае выводим ошибку о том что команда не правильная? Вот этот момент поясни пожалуйста.

Вопрос по DirectInput18 авг. 200420:47#15
Что больше ни кто не сможет мне помочь?

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр