LINUX.ORG.RU

Сообщения wingear

 

hwengine падает при попытке загрузить png

harinezumi@emptiness ~ $ hwengine .hedgewars/ /usr/share/games/hedgewars/Data/ Downloads/Repair_Border.37.hwd 
Hedgewars 0.9.17 engine (network protocol: 41)
Init SDL... ok
Init SDL_ttf... ok
Init SDL_image... ok
Loading .hedgewars//Data/Graphics/hwengine.png [flags: 8] An unhandled exception occurred at $00007F1B5B27C8C9 :
EAccessViolation : Access violation
  $00007F1B5B27C8C9

libsdl-1.2.14-r6

sdl-image-1.2.10-r1

libpng есть 1.2.46, 1.4.8-r2 и 1.5.7

Может, у кого-нибудь было похожее?

wingear
()

[openGL] Не пойму, как закинуть нормали в массив

Сначала делал так:

glm::vec3 modelData[28];
    float size = 3.0f;
    modelData[0] = glm::vec3(0.0f,size,0.0f);
    modelData[1] = glm::vec3(-size,0.0f,+size);
    modelData[2] = glm::vec3(size,0.0f,+size);
    modelData[3] = glm::vec3(size,0.0f,+-size);
    modelData[4] = glm::vec3(-size,0.0f,+-size);
    modelData[5] = glm::vec3(0.0f,0.0f,0.0f);
    modelData[6] = glm::vec3(0.3f,0.3f,0.0f);
    modelData[7] = glm::vec3(0.6f,0.6f,0.0f);
    modelData[8] = glm::vec3(1.0f,0.0f,0.0f);
    modelData[9] = glm::vec3(1.0f,1.0f,0.0f);
    modelData[10] = glm::triangleNormal(modelData[0],modelData[2],modelData[1]);
    modelData[11] = modelData[10];
    modelData[12] = modelData[10];
    modelData[13] = glm::triangleNormal(modelData[0],modelData[3],modelData[2]);
    modelData[14] = modelData[13];
    modelData[15] = modelData[13];
    modelData[16] = glm::triangleNormal(modelData[0],modelData[4],modelData[3]);
    modelData[17] = modelData[16];
    modelData[18] = modelData[16];
    modelData[19] = glm::triangleNormal(modelData[0],modelData[1],modelData[4]);
    modelData[20] = modelData[19];
    modelData[21] = modelData[19];
    modelData[22] = glm::triangleNormal(modelData[1],modelData[3],modelData[4]);
    modelData[23] = modelData[22];
    modelData[24] = modelData[22];
    modelData[25] = glm::triangleNormal(modelData[3],modelData[2],modelData[1]);
    modelData[26] = modelData[25];
    modelData[27] = modelData[25];
    int indexes[18] = {0,2,1,0,3,2,0,4,3,0,1,4,1,3,4,2,3,1};
Рисовалось так:
glEnableVertexAttribArray(0);
    glEnableVertexAttribArray(1);
    glEnableVertexAttribArray(2);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,IBO);
    glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,sizeof(glm::vec3),0);
    GLubyte ss =5*sizeof(glm::vec3);
    glVertexAttribPointer(1,2,GL_FLOAT,GL_FALSE,sizeof(float),(const GLvoid*)ss);
    ss =10*sizeof(glm::vec3);
    glVertexAttribPointer(2,3,GL_FLOAT,GL_FALSE,sizeof(glm::vec3),(const GLvoid*)ss);
    glDrawElements(GL_TRIANGLES,18,GL_UNSIGNED_INT,0);
    glDisableVertexAttribArray(0);
    glDisableVertexAttribArray(1);
    glDisableVertexAttribArray(2);
Шейдеры:
#version 330
in layout (location = 0) vec3 Position;
in layout (location = 1) vec2 TexCoord;
in layout (location = 2) vec3 Normal;
uniform mat4 mvp;
uniform mat4 world;
out vec2 finalCoord;
out vec3 normal0;
void main(void)
{
    gl_Position = mvp * vec4(Position,1.0);
    normal0 = (world * vec4(Normal,0.0)).xyz;
    finalCoord = TexCoord;
}
#version 330
in vec2 finalCoord;
in vec3 normal0;
out vec4 fragColor;
uniform sampler2D samp;
struct dirlight
{
    vec3 color;
    float ambInt;
    float diffInt;
    vec3 dir;
};
uniform dirlight light;
void main(void)
{
    vec4 AmbientColor = vec4(light.color, 1.0f) * light.ambInt;
    float DiffuseFactor = dot(normalize(normal0), -light.dir);
    vec4 DiffuseColor;
    if (DiffuseFactor > 0) {
        DiffuseColor = vec4(light.color, 1.0f) * light.diffInt * DiffuseFactor;
    }
    else {
        DiffuseColor = vec4(0, 0, 0, 0);
    }
    fragColor = texture2D(samp,finalCoord.st) * (AmbientColor + DiffuseColor);
}
Но диффузное освещение не получалось - хз, почему, но в результате получался тот же самый ambient. На gamedev.ru посоветовали убрать «магические числа» «5» и «10» из glVertexAttribPointer и сделать структуру вершины с текстурными координатами и нормалями.
struct vertex
{
    glm::vec3 pos;
    glm::vec2 tex;
    glm::vec3 norm;
};
Рисуется иначе:
vertex *offset = NULL;
    glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,sizeof(vertex),&offset->pos);
    glVertexAttribPointer(1,2,GL_FLOAT,GL_FALSE,sizeof(vertex),&offset->tex);
    glVertexAttribPointer(2,3,GL_FLOAT,GL_FALSE,sizeof(vertex),&offset->norm);
    glDrawElements(GL_TRIANGLES,18,GL_UNSIGNED_INT,0);
В принципе, заработало, но, из-за неправильно расставленных нормалей пропали все тени. И это понятно: ведь нормаль должна привязываться не к вершине, а к треугольнику. Есть выход - сделать структуру triangle и рисовать через glDrawArrays, но это неоптимально. Можно ли оставить индексы, но сделать нормали?

 

wingear
()

hwengine падает при попытке загрузить png

harinezumi@emptiness ~ $ hwengine .hedgewars/ /usr/share/games/hedgewars/Data/ Downloads/Repair_Border.37.hwd 
Hedgewars 0.9.17 engine (network protocol: 41)
Init SDL... ok
Init SDL_ttf... ok
Init SDL_image... ok
Loading .hedgewars//Data/Graphics/hwengine.png [flags: 8] An unhandled exception occurred at $00007F1BCB48E8C9 :
EAccessViolation : Access violation
  $00007F1BCB48E8C9
harinezumi@emptiness ~ $ eix libpng
[I] media-libs/libpng
     Available versions:  
        (1.2)   1.2.46
        (0)     1.4.5 (~)1.4.7 **1.5.2 1.5.6 (~)1.5.7
        (1.4)   (~)1.4.8-r2
        {apng neon static-libs}
     Installed versions:  1.5.7(15:32:19 01.01.2012)(apng static-libs -neon)
     Homepage:            http://www.libpng.org/
     Description:         Portable Network Graphics library

Подозреваю, что дело в установленной SDL 1.3 параллельно с 1.2-14-r6, уже несколько раз проверял - libSDL.so ссылается на 1.2, а экспериментальная версия мирно лежит в /usr/local/lib

Может, дело в другом?

wingear
()

Стоит ли переделывать проект, превращая функции в методы?

Прохожу этот урок. По делу там только несколько строчек в конце, добавляющих ambient light в шейдер, это я сделал и у себя(чтобы что-то осталось в голове, не копирую уроки, а переделываю их под SDL и glm). Большую же часть урока идет перелопачивание кода с выносом всего, что можно, из main.cpp и добавлением отдельного класса technique, работающего с шейдерной программой. Класс я сделаю, но насколько имеет смысл делать класс application и превращать функции и его методы, чтобы максимально очистить от всего main? Если что, моё «по мотивам» всего этого - здесь. С qtCreator надо уходить, конечно, в т.ч. и потому, что, кроме qmake, из qt там уже ничего не используется

wingear
()

[Отговорите][Фатальный недостаток] Необходимо создать аналог Dreamweaver`a с эмулятором IE

Кажется, что нет ни одного нормального ориентированного на дизайнера приложения для редактирования страниц - блокнот(Kate, vim,etc.) + firebug - это, конечно, хорошо, но, как я недавно убедился, есть люди, для которых автозакрытие тегов, хороший редактор css и открытие окна выбора файлов по src= значит достаточно многое.

Те, что есть, мне не нравятся - Amaya, nvu и kompoZer умерли, а bluegriffon - жуток во всем, начиная с просьб скачать непонятные плагины при первом запуске, отсутствия подсветки синтаксиса и автодополнения, и заканчивая сохранением в .xht по умолчанию и руганью на непонятный формат при каких-либо нетрививальных изменениях в коде и попытке перейти в режим дизайна. Также было бы здорово объединить опенсорсные движки(если делать на Qt, то проще всего сначала будет добавить khtml и webkit, потом добавить Gecko) в одном приложении для предварительного просмотра, затем с их помощью можно попытаться эмулировать поведение закрытых(Trident и Presto).

 

wingear
()

На работе хотят, чтобы я поставил крякнутый Корел. Чем оно чревато и что делать?

Сабж. Под своим зарегенным на corel.ru аккаунтом поставил его дизайнеру(правда, она еще на dreamweaver и фотошоп замахнулась лицензионные, но показал гимп и firebug, вроде за месяц триального немного привыкла). Не вижу никаких свободных альтернатив. Через 4 дня истекает срок. Попробую, конечно, почистить реестр, но что-то подсказывает, что при запуске оно снова обратится к себе на сервер и узнает, что срок вышел.

Теоретически, что мне будет, как системному администратору, в случае проверки(хотя вероятность её мизерна, конечно)?

Не хочется конфликтовать, но еще меньше хочется поощрять пиратство как оборотную сторону копиразма

wingear
()

1С 8.2 - где там консоль?

Subj. Как я ни сопротивлялся, все-таки по работе пришлось столкнуться с этой желтой программой. До сих пор удалось выезжать на интуиции, но в пятницу бухгалтеру потребовалось отменить проведение нескольких документов. Нашел, как это сделать «программно», т.е. через тамошний бейсик, переведенный промтом, но не могу понять, где и в каком режиме видна «консоль», т.е. как найти окно ввода для этого языка?

wingear
()

SDL, openGL - криво вертится

При попытке сделать rotate как через glm, так и внутри шейдера, првязываясь к времени, всё хорошо и плавно. Когда привязываю к нажатию клавиши, сначала реагирует только на её отпускание, потом и вовсе начинает тормозить. Причем это именно с вращением, с масштабированием и переносом всё хорошо. Теряюсь в догадках, с чем такое м.б. связано?

#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <fstream>
#define GL3_PROTOTYPES 1
#include <GL3/gl3w.h>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <SDL/SDL.h>

SDL_Window *mainwindow;
SDL_GLContext maincontext;
GLuint translateLoc,shader,VBO,sinLoc;
float tm=0;
glm::mat4 translation;
void sdldie(const char *msg)
{
    printf("%s: %s\n", msg, SDL_GetError());
    SDL_Quit();
    exit(1);
}
void quit()
{
    glDeleteProgram(shader);
    SDL_GL_DeleteContext(maincontext);
    SDL_DestroyWindow(mainwindow);
    SDL_Quit();
}


void draw_scene()
{
  //  tm+=0.1;
    glClear ( GL_COLOR_BUFFER_BIT);
//    translation = glm::rotate(translation,glm::sin(tm),glm::vec3(0.0f,1.0f,0.0f));
    glUniformMatrix4fv(translateLoc,1,GL_FALSE,glm::value_ptr(translation));
    glUniform1f(sinLoc,tm);
    glEnableVertexAttribArray(0);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,0);
    glDrawArrays(GL_TRIANGLES,0,3);
    glDisableVertexAttribArray(0);
    SDL_GL_SwapWindow(mainwindow);
    SDL_GL_SwapBuffers();
    SDL_Delay(20);
}
GLuint load_and_compile_shader(char *filename, GLenum shaderType)
{
    std::string line,total;
    std::ifstream shaderFile(filename);
    if(shaderFile.is_open())
    {
        while(shaderFile.good())
        {
            getline(shaderFile,line);
            total+=line+"\n";
        }
        shader = glCreateShader(shaderType);
        GLint Lengths[1];
        const GLchar *text = total.c_str();
        Lengths[0]= strlen(text);
        glShaderSource(shader,1,&text,Lengths);
        glCompileShader(shader);
        GLint result;
        glGetShaderiv(shader,GL_COMPILE_STATUS,&result);
        if(!result)
        {
            GLchar infoLog[1024];
            glGetShaderInfoLog(shader,sizeof(infoLog),NULL,infoLog);
            printf("Error while compiling shader: %s\n",infoLog);
            exit(-1);
        }
        else
            return shader;
    }
}

void prepare()
{
    if (SDL_Init(SDL_INIT_VIDEO) < 0)
        sdldie("Unable to initialize SDL");
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
    mainwindow = SDL_CreateWindow("stop", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
        vi->current_w, vi->current_h, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN);
    if (!mainwindow)
        sdldie("Unable to create window");
    maincontext = SDL_GL_CreateContext(mainwindow);
    SDL_GL_SetSwapInterval(1);
    gl3wInit();
    glClear ( GL_COLOR_BUFFER_BIT || GL_DEPTH_BUFFER_BIT);
    glGenBuffers(1,&VBO);
    glBindBuffer(GL_ARRAY_BUFFER,VBO);
    glm::vec3 modelData[3];
    float size = 0.2f;
    modelData[0] = glm::vec3(-size,-size,0.0f);
    modelData[1] = glm::vec3(size,-size,0.0f);
    modelData[2] = glm::vec3(size,size,0.0f);
    glBufferData(GL_ARRAY_BUFFER,sizeof(modelData),modelData,GL_STATIC_DRAW);
    glEnableVertexAttribArray(0);
    GLuint myshader = glCreateProgram();
    GLuint vert = load_and_compile_shader("train.vert",GL_VERTEX_SHADER);
    GLuint frag = load_and_compile_shader("train.frag",GL_FRAGMENT_SHADER);
    glAttachShader(myshader,vert);
    glAttachShader(myshader,frag);
    glLinkProgram(myshader);
    translateLoc = glGetUniformLocation(myshader,"mTranslate");
    translation = glm::mat4(1.0f);
    GLint status;
    glGetProgramiv(myshader,GL_LINK_STATUS,&status);
    if(!status)
    {
        GLchar infoLog[1024];
        glGetProgramInfoLog(myshader,sizeof(infoLog),NULL,infoLog);
        printf("Error while linking shader: %s\n",infoLog);
    }
    glValidateProgram(myshader);
    glUseProgram(myshader);
}

void handle_keys(SDL_Event ev)
{
    switch(ev.key.keysym.sym)
    {
    case SDLK_ESCAPE:
        SDL_Quit();
        quit();
        exit(0);
        break;
    case SDLK_w:
        translation = glm::translate(translation,glm::vec3(0.0f,0.05f,0.0f));
        break;
    case SDLK_s:
        translation = glm::translate(translation,glm::vec3(0.0f,-0.05f,0.0f));
        break;
    case SDLK_a:
        translation = glm::translate(translation,glm::vec3(-0.05f,0.0f,0.0f));
        break;
    case SDLK_d:
        translation = glm::translate(translation,glm::vec3(0.05f,0.0f,0.0f));
        break;
    case SDLK_UP:
        translation = glm::rotate(translation,0.01f,glm::vec3(1.0f,0.0f,0.0f));
        break;
    case SDLK_DOWN:
        translation = glm::rotate(translation,-0.01f,glm::vec3(1.0f,0.0f,0.0f));
        break;
    case SDLK_RIGHT:
        translation = glm::rotate(translation,0.01f,glm::vec3(0.0f,1.0f,0.0f));
        break;
    case SDLK_LEFT:
        translation = glm::rotate(translation,-0.01f,glm::vec3(0.0f,1.0f,0.0f));
        break;
    case SDLK_q:
        translation = glm::scale(translation,glm::vec3(0.9f,0.9f,0.0f));
        break;
    case SDLK_e:
        translation = glm::scale(translation,glm::vec3(1.1f,1.1f,0.0f));
        break;
    }
}

int main(int argc, char *argv[])
{
    prepare();
    SDL_Event event;
    while( true ) {
        SDL_PollEvent( &event );
            switch( event.type ) {
            case SDL_KEYDOWN:
                handle_keys(event);
                break;
            default:
                draw_scene();
            }
        }
    return 0;
}

Шейдеры:

#version 330
in layout (location = 0) vec3 Position;
uniform mat4 mTranslate;
out vec4 FragColor;
void main(void)
{
    gl_Position = mTranslate * vec4(Position,1.0);
    FragColor = vec4(1.0,0.0,0.0,1.0);
}

in vec4 FragColor;

void main(void)
{
    gl_FragColor = FragColor;
}
wingear
()

[QtCreator][WTF?]ошибка: нет декларации ‘string’ в этой области видимости

Почему-то не получается заставить его увидеть стандартный тип, хотя /usr/include/string.h есть, даже не пришлось include от компилятора добавлять в свойства проекта. Конечно, Qt не используется и лучше бы Code::blocks, или kdevelop, но уже как-то привык к QtCreator`у и, по идее, д.б. какой-то проcтой способ

wingear
()

QGLContext получается невалидным. С чего бы это?

Попробовал инициализировать opengl 3 окно с помощью Qt.


#include "oglwindow.h"

OGLWindow::OGLWindow(QWidget *parent) :
    QGLWidget(parent)
{
}
void OGLWindow::initializeGL()
{
    QGLFormat fm;
    fm.setAlpha(true);
    fm.setDoubleBuffer(true);
    fm.setProfile(QGLFormat::CoreProfile);
    fm.setVersion(3,3);
    fm.setSampleBuffers(true);
    fm.setAccum(true);
    fm.setDepth(true);
    fm.setDirectRendering(true);
    QGLContext *con = new QGLContext(fm);
    con->create();
    con->makeCurrent();
}
void OGLWindow::keyPressEvent(QKeyEvent *key)
{

}
void OGLWindow::resizeGL(int w, int h)
{

}
void OGLWindow::paintGL()
{

}
oglwindow.h:

#ifndef OGLWINDOW_H
#define OGLWINDOW_H
#include <QMainWindow>
#include <QKeyEvent>
#include <QtOpenGL>

class OGLWindow : public QGLWidget
{
    Q_OBJECT

public:
    OGLWindow(QWidget *parent = 0);
    void keyPressEvent(QKeyEvent *key);
    void initializeGL();
    void resizeGL(int w, int h);
    void paintGL();

private slots:

private:

};
#endif // OGLWINDOW_H

main.cpp:

#include <QtGui/QApplication>
#include "oglwindow.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    OGLWindow w;
    w.show();

    return a.exec();
}

При каждом запуске выводится сообщение «QGLContext::makeCurrent(): Cannot make invalid context current». Понятно, что причин м.б. вагон и маленькая тележка, но до того с SDL нормально работало. Здесь показалось, что сделано проще, но, видимо, что-то забыл сделать. Формат пробовал полностью оставлять пустым, но ничего не менялось. Или нужно сначала имплементировать resizeGL и вызвать его перед show?

wingear
()

[icq][криокамера][нытик-тред] Кажется, они придумали новый способ экскоммутации

В кои веки понадобилась мне забытая аська. Пароль не помню, сунулся на сайт, восстановил по номеру почты. Где узнать сам номер аськи не в официальном клиенте, так и не нашел. Линуховый оф.клиент хз почему не скачивается(стоит флешка с соответствующей кнопкой и никак не реагирует на попытки её нажать). В веб-клиенте опять же непонятно где есть номер. Копыту, licq и остальным нужен именно он.

Я расстроен

 , ,

wingear
()

[Mysql]Что-то вроде принципа неопределенности Гейзенберга

По наблюдениям, это работает так:

если мы любым способом узнаем insert_id(mysql_insert_id(), select count(*) from table и т.д.), запись не вставится;

если принудительно выставить id, который auto_increment и который уже когда-либо использовался в этой таблице(даже если сейчас он свободен), запись не вставится;

в остальных случаях insert query работает, но мне надо бы знать номер вставленной записи:(

Сам код:

$res = mysql_query('select * from branches where id='.$this->id);
	if($res->num_rows==0)
	{
	  $this->name = $name_;
	  mysql_query('insert into branches(name) values(\''.$name_.'\')');
// 	  $this->id = mysql_insert_id(); с этим предыдущая строка не работает
	}

 

wingear
()

[туплю] Insert query не срабатывает и не выдает ошибку

используется mysqli:

$mysqli->query('insert into branches(name) values(\''.$name_.'\')');
echo $mysqli->error();
При этом, если вывести запрос и выполнить его в phpmyadmin, все работает. Ошибки не выводятся. С чем такое м.б. связано?

 

wingear
()

mysql stored procedure почему-то срабатывает только один раз

Пробую сделать через хранимые процедуры(хотя именно здесь, конечно, можно и без них).

Структура таблицы: id,childs(потомки данной ветви через запятую), name.

Процедура:

mysql_query('
      create procedure getBranchData(IN id_ int)
      begin
	select * from branches where id=id_;
      end');
Используется так:
class branch
{
  private $childs = array();
  private $id,$name;
  function __construct($id_) {
    $this->id = $id_;
    $res = mysql_query('call getBranchData('.$this->id.')');
    $arr = mysql_fetch_array($res);
    $this->name = $arr['name'];
    $chi = explode(",",$arr['childs']);
    foreach($chi as $ch)
    {
      if($ch!=$this->id && !empty($ch))
      {
	$br = new branch($ch);
	$this->childs[] = $br;
      }
    }
  }
}
$el0 = new branch(1);
При попытке приписать первого потомка в mysql_fetch_array передается false, хотя, если не создавать объект, а вызвать процедуру напрямую 1 раз, все работает. Из-за чего такое может получаться?

wingear
()

Есть ли способ перестать быть эникейщиком?

До меня как-то резко дошло, что я ничего не умею. Непонятно, как так получилось - вроде бы сначала программирование даже было интересным, хотя и не так, как лепка, потом кучу времени стали отнимать игры, а после перехода на линукс - интернет. Процесс становится циклическим - удается найти быдлоработу вроде техника или «сисадмина»(один раз через 2 месяца поперли с верстальщика, второй - ушел сам, потому что работа php-шником была сдельной и после стипендии испытательного срока денег хватало только на еду, хотя и скучно жутко было), потом такое положение вещей устраивать перестает, увольняешься, проваливаешь одно за другим тестовые задания, со временем деньги заканчиваются полностью, и идешь уже просто куда-нибудь. Правда, сегодня неожиданно для себя ушел со стажировки по подключению интернета - поскольку ходить будешь целый день, и времени не останется больше ни на что, да и знакомое ощущение, когда сразу хочется уйти - уже понял, что тут лучше себя не обманывать. Хотя тоже самое было почти со всей работой, предполагающей нормированное сидение в офисе - до сих пор не хочется вспоминать.

Я прочитал спецификацию последнего openGL, пробовал адаптировать уроки с http://ogldev.atspace.co.uk под sdl и glm, хотя выходило не очень, да и вся математика, которую пытался сделать самостоятельно, не работала. Некоторое время помогала мысль, что это вообще не мое, а надо рисовать, но сегодня отправил кое-как законченное в krita знакомой дизайнерше, она сказала, что я сделал её плакать. Похоже, я разучился делать хоть что-нибудь красиво, хотя и не помню, когда это произошло. Если правы буддисты и возможно переиграть, хотя бы частично сохранив память, чего не нужно делать, чтобы не произошло того, что есть сейчас?

wingear
()

Не работают userscript`ы

Пробовал в хроме и фоксе. Кажется, чего-то основного не достает, т.к. не работает даже alert:

// ==UserScript==
// @name addAudio
// @description convert links to mp3 to audio tags
// @match http://*/*
// @include http://*
// ==/UserScript==
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
 $('a[href$=".mp3"]').each(function(){
$this.html('
<audio controls="controls">
  <source src="'+$this.attr("href")+'" type="audio/mp3" />
</audio>');
});
</script>

wingear
()

Сбылась мечта идиота

Изначальный план был таков: проработать где-нибудь месяца 2, накопить денег на переезд, потом связаться с одной геймдев-конторой из глубокого замкадья, где в кои веки требуется не трижды сертифицированный зубр, а стажер. После безуспешных попыток хоть куда-то устроиться за прошедший месяц плюнул, написал им, хотя денег и осталось только-только на доехать. Прислали тестовое задание - виндовый солюшн без всяких намеков на кроссплатформенность, хитрым способом берущий данные из lua и xml, хотя в основном там С++. В течение 3 часов ставил виртуалбокс и винду, разбирался, почему она периодически валится, поотключал всё ненужное, и теперь пялюсь на практически непонятные закорючки, как баран на новые ворота. Если бы тоже самое с нуля и по своему, м.б., даже сделал, а здесь - вообще не понятно, что откуда вызывается.

Интересно: то, что явления могут нравиться только на расстоянии - глобальное свойство мира, или индикатор того, что я занимаюсь не тем, чем нужно?

wingear
()

[openGL] не получается перспективная проекция

Попробовал сделать перспективную проекцию по мотивам этого, но получается какая-то лажа: пирамида сплющивается.

Для матриц используется glm - такой порт glsl на С++, для создания окна - SDL, есть файл с проектом для QtCreator(просто привык к этой IDE, хотя здесь без Qt).

Матрица создается следующей функцией:

mat4 mPerspective(float ratio, float zNear, float zFar, float fov)
{
    const float f = 1.0f/tan(radians(fov)/2.0f);
    mat4 mat = mat4(1.0f);
    mat[0][0]=f/ratio;
    mat[1][1]=f;
    mat[2][2]=(zFar+zNear)/(zFar-zNear);
    mat[2][3]=(2.0f*zFar*zNear)/(zNear-zFar);
    mat[3][2]=1.0f;
    mat[3][3]=0.0f;
    return mat;
}

После всех инициализаций, каждый кадр с матрицей модели происходит следующее:

void initWindow()
{
//...
    pers = mPerspective(ar,1.0f,100.0f,30.0f);
}
void drawScene()
{
    //...
    unifScale+=0.1f;
    vec4 rotVec(0.3f,unifScale,0.3f,1.0f);
    vec4 trVec(0.0f,0.0f,15.0f,1.0f);
    vec4 scVec(0.1f);
    tr = mat4(1.0f);
    tr =  mScale(scVec,tr);
    tr = mRotate(rotVec,tr);
    tr = mTransform(trVec,tr);
    tr*=pers;
    //...
}
Вроде бы матрицу сделал как нужно, в чем м.б. дело?

 

wingear
()

[C++][Не нужно][openGL] OGLplus - кто-нибудь пробовал?

Ъ:

OGLplus (oglplus) is a header only library which implements a thin object-oriented facade over the OpenGL (version 3 and higher) C-language API. It provides wrappers which automate the resource and object management and make the use of OpenGL in C++ safer and easier.

Features:

  • Automatic resource management
  • Type safety
  • Error handling and diagnostic
  • Interoperability with «basic» OpenGL
  • Additional CG related classes

Похоже, и с SDL совместно можно будет использовать.

 ,

wingear
()

gl3.h не автокомплитится

Хочется, чтобы и старые функции не были доступны, и новые автодополнялись. В glew(сейчас 1.6, 1.7 еще не пробовал) новые функции недоступны для подсветки синтаксиса и автодополнения, хотя, благодаря драйверу, и нормально собираются.

Так сейчас везде или я что-то неправильно настроил? Странно, что в gl3.h новые функции объявлены так:

GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei primcount);

Еще нашел .spec файлы на openGL Regisrty, но не понял, что с ними делать. Хотя в них в основном типы и enum-ы объявляются.

wingear
()

RSS подписка на новые темы