1. Всегда можно найти место на просторах сети, где подскажут конкретно по существу проблемы, потому что достаточное количество литературы и примеров.2. Указатели и ссылки - это реально круто. Манипуляция данными происходит по адресам этих данных в оперативке. В этом зарыта скорость выполнения.3. ООП разгружает мозг, раскладывая всё по полочкам. Я поверил на слово Страуструпу, когда прочитал в книге его рекомендации почему не стоит использовать С там, где это совсем не требуется, почему не стоит на С++ писать как на С, используя структуры, отказываясь от классов и тому подобное...
int a;int *p;p = &a;*p = 123;
dim a as integerdim p as integer ptrp = @a*p = 123
Ланухумыч, у тебя есть желание продолжать заниматься самообразованием? Или проще накопить денег на тот же Win+V-Ray + железо (или иной рендерер под винду) и рендерить относительно шустро, без всех этих заморочек?
Морис просит помочь интегрировать мой код в официальную версию аддона "render_povray", там Python.
У меня в голове сейчас такая каша, но я ещё успеваю думать про эту тему, ибо как ни странно, но желание у меня пока ещё осталось.
ЦитироватьМорис просит помочь интегрировать мой код в официальную версию аддона "render_povray", там Python. Это очень хорошая новость. Мои поздравления!
for (int i = 0; i< 242000000; i++) temp+=temp;
#include "fox-1.6/fx.h"#include <time.h>#include <iostream>using namespace std;class ImageWindow : public FXMainWindow{ FXDECLARE(ImageWindow)protected: ImageWindow(){} FXStatusBar *statusbar;private: FXCanvas *canvas; FXColor bgColor = FXRGB(0, 0, 0);public: enum { ID_CANVAS = FXMainWindow::ID_LAST, }; long onPaint(FXObject *, FXSelector, void *); long onMouseDown(FXObject *, FXSelector, void *);public: ImageWindow(FXApp* a); virtual void create(); virtual ~ImageWindow(); };FXDEFMAP(ImageWindow) ImageWindowMap[] = { FXMAPFUNC(SEL_PAINT, ImageWindow::ID_CANVAS, ImageWindow::onPaint), FXMAPFUNC(SEL_LEFTBUTTONPRESS, ImageWindow::ID_CANVAS, ImageWindow::onMouseDown)};FXIMPLEMENT(ImageWindow, FXMainWindow, ImageWindowMap, ARRAYNUMBER(ImageWindowMap))ImageWindow::ImageWindow(FXApp* a):FXMainWindow(a,"FOX Render",NULL,NULL,DECOR_ALL,0,0,850,600,0,0){ FXHorizontalFrame *container=new FXHorizontalFrame(this,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED); container->setBackColor(FXRGB(226,223,222)); FXHorizontalFrame *chartwell=new FXHorizontalFrame(container,FRAME_SUNKEN|LAYOUT_FILL_X| LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT, 0,0,0,0,10,10,10,10); canvas = new FXCanvas(chartwell, this, ID_CANVAS, LAYOUT_FILL_X|LAYOUT_FILL_Y); //statusbar=new FXStatusBar(this,LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER); //statusbar->getStatusLine()->setNormalText("");}ImageWindow::~ImageWindow() {}void ImageWindow::create() { FXMainWindow::create(); show(PLACEMENT_SCREEN); }long ImageWindow::onPaint(FXObject *, FXSelector,void *ptr) { FXEvent *ev = (FXEvent *) ptr; FXDCWindow dc(canvas, ev); dc.setForeground(bgColor); dc.fillRectangle(0,0,canvas->getWidth(),canvas->getHeight()); return 1;}timespec diff(timespec start, timespec end);long ImageWindow::onMouseDown(FXObject *, FXSelector, void *ptr){ timespec time1, time2; int temp = 0; clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1); for (int i = 0; i< 242000000; i++) temp+=1; clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2); long b = 0; FXString name, ftemp; name = FXStringVal(diff(time1,time2).tv_nsec); ftemp = FXStringVal(temp); this->setTitle("Render Time: "+name+" nanosecond "+ftemp); //statusbar->getStatusLine()->setNormalText("Render Time: "+name+" nanosecond"); //statusbar->repaint(); return b;}timespec diff(timespec start, timespec end){ timespec temp; if ((end.tv_nsec-start.tv_nsec)<0) { temp.tv_sec = end.tv_sec-start.tv_sec-1; temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec; } else { temp.tv_sec = end.tv_sec-start.tv_sec; temp.tv_nsec = end.tv_nsec-start.tv_nsec; } return temp;}int main(int argc,char *argv[]){ FXApp application("FoxTest","FoxTest"); application.init(argc,argv); new ImageWindow(&application); application.create(); return application.run(); }
Вот интересного научного отечественного по теме почитать:http://www.graphicon.ru/html/2013/papers/207-210.pdfhttp://istina.msu.ru/media/dissertations/dissertation/8be/5fa/9651265/08_frolov_diss_compressed.pdf
Тут динозавры твои есть.
Но, мы до GPU ещё не добрались.