Сообщения на форуме пользователя Andrey (256 стр.)
std:vector.erase ошибка | 20 авг. 2004 | 11:35 | #7 |
---|
>сли бы оставил просто 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 авг. 2004 | 10:59 | #5 |
---|
&objects[active_object] - это корректный адрес по нему находится то что тебе нужно? Это не мусор? Какая ошибка выдается?
напиши прямо как выдается при работе,если не получиться то попробуй это просмотреть при отладке.Если будет адрес типа 0xddddddd.... или что - нибудь такое
то это мусор.
У меня такое ошущение что это типичная ошибка работы с указателями
Правка: 20 авг. 2004 11:01
std:vector.erase ошибка | 20 авг. 2004 | 10:45 | #3 |
---|
>objects.erase(&objects[active_object]); //удаление уз списка
objects[active_object] - поподробней что в внутри objects т.е. из чего состоит
класс GameObject (или структура)
А пока по коду все прозрачно и просто.
Правка: 20 авг. 2004 10:45
Вопрос по кватернионам | 20 авг. 2004 | 10:20 | #1 |
---|
Вопросы по движку | 20 авг. 2004 | 9:49 | #16 |
---|
>Командъ ети должнъ бъть аналогами команд к игре (через меню скажем)
Т.е. что-то типа дублирования?
А какой класс тогда должен с меню работать?Можн оли эту задау на консоль возложить?
Правка: 20 авг. 2004 9:50
std:vector.erase ошибка | 20 авг. 2004 | 9:47 | #1 |
---|
Надо код глянуть может ты не на тот указатель ссылаешься?
Вопросы по движку | 19 авг. 2004 | 21:29 | #14 |
---|
Вот теперь я начинаю въезжать
Вопрос по кватернионам | 19 авг. 2004 | 20: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 авг. 2004 | 18:40 | #12 |
---|
Ну еще расскажешь?
Вопрос по DirectInput | 19 авг. 2004 | 14:16 | #19 |
---|
Я делал тоже само у меня еще и ошибки указываются для какого устройства.А там просто ворзвращается false.
Alex-y
Я так сделал он по прежнему ошибка в лог файле:
Правка: 19 авг. 2004 14:19
Вопросы по движку | 19 авг. 2004 | 10:06 | #11 |
---|
Т.е. Я так понял команду можно создать просто играя в игру?Можно во время отладки и тестирования?Но эта команда будет существовать тоько пока будет запущен движок?
Она тогда будет храниься где-то в памяти.Значит есть команды "жестко зашитые в движок"
и есть которые могут добавляться когда угодно.А еще их же все можно хранить в файле?
или не все.
Вопрос по DirectInput | 19 авг. 2004 | 8:59 | #18 |
---|
Присылай должно помочь.
Вопросы по движку | 18 авг. 2004 | 21:13 | #9 |
---|
Что значит в любой момент?а как этой команде дейстаие прописывать прямо при добавлении типа ввод параметров?
Правка: 18 авг. 2004 21:14
Вопросы по движку | 18 авг. 2004 | 20:56 | #7 |
---|
Вот спасибо теперь мне все понятно я так что-то представлял.Похоже в том движке так и сделано про который ты говорил.
А список команд постоянный,т.е. в начале работы мы туда заносим необходимые команды,а потом вы их выполняем, если команда правильная и будет найдена в списке, в противном случае выводим ошибку о том что команда не правильная? Вот этот момент поясни пожалуйста.
Вопрос по DirectInput | 18 авг. 2004 | 20:47 | #15 |
---|