Блог О пользователеevilspirit

Регистрация

Календарь

« Сентябрь 2011  
Пн Вт Ср Чт Пт Сб Вс
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
 
Великое несчастье ждет тех, кто поверит в явь этой неяви, в ощутимость этой неощутимости, в суть этого несуществования (с) Бардо Тодол

счетчик посещений
 

Программка для расчета своeй распущенности.


Уже несколько лет по инету бродит боянистый тест для определения распущенности. Получилась из него вот такая программка: SinsCoeff.exe



И пусть возрадуются теперь старушки у подъездов)))

 

Правильный антиалиазинг без шейдеров и multisampling.


Я придумал способ сделать правильный антиалиазинг без шейдеров и использования multisampling,
используя лишь GL_LINE_SMOOTH, который поддерживается большинством видеокарт.
На моей видеокарте Radeon Mobility HD4570 в не очень сложной сцене фпс падает со 100 до 80.
Возможно, где-то будет быстрее/медленнее - все зависит от вендора и драйверов.
Ходят слухи, что может свалиться в software.



Код простой и в комментариях не нуждается:

if (use_fake_aa) { 
glEnable(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(1.0f, 1.0f);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
} else {
glDisable(GL_POLYGON_OFFSET_FILL);
}

// polygons
glDrawElements(GL_TRIANGLES, m.mesh.getFacesCount() * 3, GL_UNSIGNED_INT, 0);

if (use_fake_aa) {
glEnable(GL_LINE_SMOOTH);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glDepthMask(GL_FALSE);

// lines
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawElements(GL_TRIANGLES, m.mesh.getFacesCount() * 3, GL_UNSIGNED_INT, 0);

glDisable(GL_LINE_SMOOTH);
glDisable(GL_BLEND);
glDepthMask(GL_TRUE);
}


Может, баян, но в интернете ничего подобного не нашел (без шейдеров).
Найдена реализация похожего, но через шейдеры.
http://www.humus.name/index.php?page=3D
Если видеокарта (или рендер) поддерживает шейдеры, можно использовать приведенный выше алгоритм, иначе - использовать мой вариант для FFP.

 
Теги: antialiasing|opengl
 
 

Оптимизация набора текста программ.


Работа программиста в момент написания программы обычно состоит из двух основных составляющих:

0. Активный мыслительный процесс
1. Взаимодействие с компьютером через интерфейсы (клавиатура, мышь, монитор, и. т д.)

Проще говоря, программист думает и пишет код. Чем меньше программист пишет код, тем больше думает и наоборот. Если процесс написания кода связан с некоторыми неудобствами (нужно смотреть на клавиатуру, нужно совершать много лишних движений и т. д.), то это, безусловно, отвлекает его от процесса мышления.

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

Самым первым шагом к этому является, конечно же, обучение слепому методу набора текста. Освоив такой метод, вы навсегда забудете о преграде между вами и вычислительной машиной. Вы забудете, что такое клавиатура и как она выглядит. Когда вы полносьтю обучитесь этому методу, вы забудете, что текст набирается руками, и для вас будет существовать только мысль, которая по вашему желанию очень быстро окажется напечатанной на экране монитора. Существует множество программ и сайтов для обучения десятипальцевому слепому методу печати (например, довольно известная программа "Соло на клавиатуре")

Следующим шагом будет оптимизация процесса набора текста. Слепой десятипальцевый метод прекрасно регламентирует то, каким пальцем и когда набирать тот или иной символ. Но существует проблема, которая мешает постоянно держать пальцы на клавиатуре в определенном положении и иногда приходится все же совершать лишние движения. Дело в том, что клавиши управления курсором (Left, Right, Up, Down, PageUp, PageDown, Home, End, Delete, Backspace) находятся слишком далеко от основного блока клавиатуры, что мешает ими пользоваться, не совершая лишних движений.

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

С появлением современных текстовых редакторов и IDE, которые позволяют очень гибко настраивать сочетания клавиш, стал возможным и другой способ оптимизации набора текста - перенос клавиш управления курсором непосредственно на основной клавишный блок. Я предлагаю свой способ настройки сочетания клавиш, которым пользуюсь уже около двух лет.

Для начала, вам нужен текстовый редактор или IDE, которая поддерживает гибкую настройку сочетания клавиш (Microsoft Visual Studio, vim, Notepad++ и другиe текстовыe редакторы, основанныe на Scintilla).

Как уже было сказано, метод основан на переносе клавиш управления курсором на основной клавишный блок клавиатуры. Сочетания клавиш для самого основного действия - движения курсора влево, вправо, вверх и вниз выглядит следующим образом:

Alt+J - Left
Alt+L - Right
Alt+I - Up
Alt+K - Down

Выглядит пугающе, но на самом деле это не так. Посмотрев на эти клавиши на клавиатуре, вы обнаружите, что они располагаются точно так же, как и стандартные "стрелочки" (ну, или как WSAD, который давно уже стал стандартом управления в различных играх). Выбор именно этих клавиш обусловлен тем, что при десятипальцевом слепом методе печати правая рука находится именно на этих клавишах, что позволяет вообще не перемещать руку для управления курсором. Клавиша Alt нажимается большим пальцем левой руки.

Вам также необходимо настроить сочетания клавиш для выделения текста (предполагается, что для Copy, Cut и Paste используются Contol+C, Control+X, Control+V соответственно).

Alt+Shift+J - LeftExtend
Alt+Shift+L - RightExtend
Alt+Shift+I - UpExtend
Alt+Shift+K - DownExtend

Следующие операции, которых нам не хватает - это Home, End, PageUp, PageDown:

Alt+U - Home
Alt+O - End
Alt+P - PageUp
Alt+/ - PageDown

И нужно еще настроить сочетания клавиш для выделения текста:

Alt+Shift+U - HomeExtend
Alt+Shift+O - EndExtend
Alt+Shift+P - PageUpExtend
Alt+Shift+/ - PageDownExtend

Еще одна очень важная клавиша находится неприятно-далеко:

Alt+H - Backspace

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

Первая проблема - это то, что в ОС Windows клавиша Alt является клавишей для быстрого вызова команд меню и при ее нажатии мы получаем выделение пункта меню, по которому далее мы сможем ориентироваться с помощью клавиш курсора. Такая проблема отсутствует в Visual Studio, в Notepad++ решается использованием полноэкранного режима. Насчет других редакторов конкретно сказать не могу - к каждому нужен свой подход.

Вторая проблема - это забывание отпустить клавишу Alt при нажатии таких клавиш, как Enter или Backspace (если ваш мизинец все же до нее дотягивается). Решается назначением соответствующего действия на сочетания Alt+Enter и Alt+Backspace.

Ну и для наглядности:



Настройки сочетания клавиш для Microsoft Visual C++ 2008 Express Edition:
Чтобы применить параметры воспользуйтесь: Сервис- >Импорт и экспорт параметров...
Не забудте сохранить свои настройки, вдруг не понравится.

В дополнение к вышесказанному, хотелось бы заметить, что существует еще программа для переназначения сочетаний клавиш средствами операционной системы. Называется эта программа AutoHotkey.
Для назначения действий на сочетания клавиш программа использует скриптовый язык.
Ниже приведен скрипт, который задает сочетания клавиш вышеописанного метода управления курсором.

;---------------------------------------------- 
; Alt+I = Up
;----------------------------------------------

!sc017::
Send {Up}
return

!+sc017::
Send +{Up}
return

;----------------------------------------------
; Alt+J = Left
;----------------------------------------------

!sc024::
Send {Left}
return

!+sc024::
Send +{Left}
return

;----------------------------------------------
; Alt+K = Down
;----------------------------------------------

!sc025::
Send {Down}
return

!+sc025::
Send +{Down}
return

;----------------------------------------------
; Alt+L = Right
;----------------------------------------------

!sc026::
Send {Right}
return

!+sc026::
Send +{Right}
return

;----------------------------------------------
; Alt+U = Home
;----------------------------------------------

!sc016::
Send {Home}
return

!+sc016::
Send +{Home}
return

;----------------------------------------------
; Alt+O = End
;----------------------------------------------

!sc018::
Send {End}
return

!+sc018::
Send +{End}
return

;----------------------------------------------
; Alt+P = Page Up
;----------------------------------------------

!sc019::
Send {PgUp}
return

!+sc019::
Send +{PgUp}
return

;----------------------------------------------
; Alt+/ = Page Down
;----------------------------------------------

!sc035::
Send {PgDn}
return

!+sc035::
Send +{PgDn}
return

;----------------------------------------------
; Alt+H = Backspace
;----------------------------------------------

!sc023::
Send {BackSpace}
return

;----------------------------------------------
; Alt+; = Delete
;----------------------------------------------

!sc027::
Send {Delete}
return

 

Больная голова рукам покоя не дает…


Сидел, ставил Ubuntu на VMWare… Жутко болела голова, решил побренчать на гитаре… Стихов давно не писалось, решил написать (это практически импровизация, т.к. сочинялось почти на ходу под брынчание)

(как всегда, депрессивно-философское)

 

 

Я понял причину головной боли 
Я знаю, как ее избежать:
Мне нужно выйти в широкое поле
И, плюнув на все, ото всех убежать

А еще мне не нужно пить стептоцид
От него забивает сосуды,
А можно еще совершить суицид,
И тогда голова болеть точно не будет.

Но я знаю точно, что это не выход
Потому что я умру все равно.
Так что нужно сидеть, сидеть тихо
И курить, курить, курить в окно.

Может быть скоро наступит время —
Я смогу все пробемы свои превзойти.
Но сложное, сложное… сложное бремя
Идти по выбранному мною пути.

Но еще есть способ забыть эти муки:
Решить, что я — такой же как все.
И просто медленно дохнуть со скуки,
Не зная, зачем хожу по земле.

14 августа 2011


А ещё пишут:     dcircaf    uhatex    ахах))    ай ай ай!Написал!    Вам самим не надоело?