From 241ccb46d52f4f51ca92b1786e70cfcc085b36e2 Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 7 Apr 2015 19:55:32 +0100 Subject: [PATCH] Update README.txt + screenshot --- README.md | 8 ++++---- web/performance_01.png | Bin 14380 -> 10619 bytes web/performance_01_close_up.png | Bin 7946 -> 0 bytes 3 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 web/performance_01_close_up.png diff --git a/README.md b/README.md index ffb4faed..03c62a37 100644 --- a/README.md +++ b/README.md @@ -81,17 +81,17 @@ In your Render function, try translating your projection matrix by (0.5f,0.5f) o Can you create elaborate/serious tools with ImGui? -Yes. I have written data browsers, debuggers, profilers and all sort of non-trivial tools with the library. There's no reason you cannot, and in my experience the simplicity of the API is very empowering. However note that ImGui is programmer centric and the immediate-mode GUI paradigm might requires a bit of adaptation before you can realize its full potential. +Yes. I have written data browsers, debuggers, profilers and all sort of non-trivial tools with the library. In my experience the simplicity of the API is very empowering. However note that ImGui is programmer centric and the immediate-mode GUI paradigm might requires a bit of adaptation before you can realize its full potential. Is ImGui fast? -Down the fundation of its visual design, ImGui is engineered to be fairly performant both in term of CPU and GPU usage. Running elaborate code and creating elaborate UI will of course have a cost but ImGui aims to minimize it. +Down to the fundation of its visual design, ImGui is engineered to be fairly performant both in term of CPU and GPU usage. Running elaborate code and creating elaborate UI will of course have a cost but ImGui aims to minimize it. Mileage may vary but the following screenshot may give you a rough idea of the cost of running and rendering UI code (In the case of a trivial demo application like this one, your driver/os setup may be a bottleneck and cause higher variation or throttled framerate. Testing performance as part of a real application is recommended). -![performance screenshot](/web/performance_01_close_up.png?raw=true) +![performance screenshot](/web/performance_01.png?raw=true) -This is showing framerate for the full application loop on my 2011 iMac running Windows 7, OpenGL, AMD Radeon HD 6700M with an optimized executable. ([click here for the full-size picture](/web/performance_01.png)). +This is showing framerate for the full application loop on my 2011 iMac running Windows 7, OpenGL, AMD Radeon HD 6700M with an optimized executable. In contrast, librairies featuring higher-quality rendering and layouting techniques may have a higher resources footprint. If you intend to display large lists of items (say, 1000+) it can be beneficial for your code to perform clipping manually - using helpers such as CalcListClipping() - in order to avoid submitting them to ImGui in the first place. Even though ImGui will discard your clipped items it still needs to calculate their size and that overhead will add up if you have thousands of items. diff --git a/web/performance_01.png b/web/performance_01.png index 112d3d37d7118e8affc3de33140f451c8d7563b6..eb20f72a901bd9c85502a88e9ec30dd6ea36648e 100644 GIT binary patch literal 10619 zcmZv?c|25m{6F3;EjLo4vK)l$%UClrwyR`PmMqyN#vlnZ#=ced;@HW4Gug6*Yzfzr z!`Pa#@62GbW-r3`bnoZ$`+fiTdW@Olea?BG@qR7O=j-`;N8Z!LoIA^T_Smsw=d^BX z7#urx9E5*m&zyiq2*dT`$BzBMeNWry7Ss6)9DoEDHxD-tf?t4#UmPJMf)o+e6p=xQ z$Xyo`mynQ0NL{=rC3aC-hF4lfR$A6lMoC*v2_dh*dma8!MWE1jXeAf4IzmMQp@L6U zNyV$F`>Ee1+`4t^wpOsVew2ZMpP>`us)-4|NvevO4c5Y3;K2g{YwK6m z4{fX;zO%+=KD0yF+6Z9n-eVmR_Ba9iiepYL2s{x%h)pBv-t#mt^z#w)_xBG95Da>T z2o6O=M1e2ta4%xxqCrG#v~WtIaOz8yv=ouFG(=`5;`M7pZjMMnKB6#JwCF9OqN1X{ zTCCv%Vr)Qid~A5Cj>#R_+aGnO9{rF$Iy&k;V6{GW zOoT&AL*2-GbY&tk_?p)JQ{N}U*vu~^UAkoI?y#b7?q_7Ge9D+uXTx!i!h|U_^kT+=8{G z^qT9a3hjT&1;e_zP!-)Q+&KAbm}FcGcV`@sLZy#g!w@WaF(ZkEK@SbXaGIcy9#sZa z5i5X-7eG}=bjOioC1|%nTE`9We?HP@&*09KTZm@>W?>+ip;fA*T1ZxAYn`j@BGMR} z0bHRLQH<&c%+H2C#d|C)5SH`Lr&HkG?H!F&Cm zxKg1RzA#{h5_-IVtnH)=X21XQA`Jsijf*rZv%e)#Pu;fIrG$CGt z*r4kP%OiSxj}5!Bk{0@=cI2v(fT5OkRDj>$pi)q)J_+0WrDpv8+~MKj?gSyw-|B&J zU&{81!NnrVM8sely62LrTrr zFzjs}b-3wWg*_jJFn$_i))5E59`XBy*8zk@XzXnNG_9Futo#MihNA_JE3!vu5g2}d z+jwd+DyJ|v!1&(d6=U;l<+J4~i|63`Hc_+lr_|-$+X{j7vOBp=D$EzTF;0g2K(-6c zk}qMI_?8}VHO+%oaI$y89Vk!8pZn3DOp)n5Nsz`+hbc7geJ^K_@f!kG&~t4kEx}a>1>UtAsgl~xmJr!AIwb&Qo4wt z8qF+z(f9oDRzEc$>;oTgkeKxfl2t>is?2?fOjS3+_GOkv3Mj-2K*crCy0To+M^>%r z`v$dYCiAOO-p*th1jp&4y|d9`N9#zX6~ehw1k0-=Os1Hjd1cKn4h!=wqiG|;wDl*( zS!ulo*E)lgJ9Rtp0+jM-Uo)WVy0Yf+RNfslnZq?d3gntIwbz8cyafM5(XVv0k9}(c ztSf6nfs~SB(RXT?hADmH!CnUAN>RhSJ?`Ko*3(1y=j3_<0^SCgHz<57q3zj|2sFt@#*{yX^pIAAI$HuLREqM!mBx1QUND6=e>ax3NJ zM)2CZ{o?%icjSB|5-Mw9OmobNaQ}7o_rRZo@ng_fz|Wr`;7VapTkcr*j4AV=dDlZG zN`#LSRB>9ZB#2W3=@82SGKUuvOC=-2bW)4SXlJtB{XrW;p`r@rbXl_`kKx45x5Xy? zi6iY&W&6tqCTVnfrxQ7ZTg6N#^&LsLNR-uc%T58;0%jHGb-zISGIzj9SHLSc;oltm zJK_XTE(utF+ak&HS0NS@e}`g7ZOs>~famkh;%Jn;LlgRav&U;+tj1rGKDL1w!@kWYSr{kM z_YZt;x_rC_sY0OlL^x?!wBO9aDzx=_%+Lv>uVKySjLHSH$tleNXM!D0MIPObI^Iru z+v~Y#6IT6F14(VzG4Wd+n#FA?#?1B|s{)_sl$pU?FkciKkW+yb78LJJJmEp>UGA=Zt zJp7jh%Jig(F|BMkR4(nY>pvEfUhahPM?`0m z73?GWK30xvdvoNfQg6~t%fJ`grirKu=o6BwPf;41p zg-h~P=TbX2;xK#}vkUpXBzw~lG%J!O+v^L>nkGYYA_Q@in4BUcoAJ!;A$a~b?B51w zj3k1-sMr4b3n=1Xq16IVM`H2DQwn@|+c2;AV8G^{n?!vW6rch90rLX)?#y9d29W(S zw^H9=)@2DW7>#( z(6o&`dpva!^&Cbed9cTSz%%EqlFfZ7$RhQcDzRlLrD=21`fx8nAj$e*)?q4e_d#NQ zQc6sfEH?&Kcgb}dC3E5H$5Xx1zrMr-ZFaJBxdv{WB=jSzXT-@YF0Z(vso_nBw1PR4 zscX!ZUU z>!8ghA&3F0v9&F-%<7VHfWJmO+)hbrF&-T6|2~}uScFg2aa|bX|-AUsl3*z z@j>IZn7)VL?rxCBqn3k(d8Dz!!*M-7ePQmBxtYiWh2Lg2EFW65f{KB%S^1Wbunb8};BjD8;e+&vm$Mz%CPNunb9c%ksq z^FOvX*N$GUDByr-UcbuX(*(;8mZJmK%F>V*B4CDAo7}harBsT!d;M^O_gyo{M&OMewhKn@*nw+%>itU-#K#-5F4tDD&)# zLPo>SNI7R#H<)nr?ZBC)K#!o6KN=mCr+moMhyq^4mt(vg_mqhrpL4i0j9QfHlM6(qI|2#Py&qx?SHa3Ge`$Ax4EeAxYUhx8w~bS9U%O(b->m7X0Yk zeQY%7)~Jy?cIcsQhVq_@^-xJu8%r1c0Tj(`;JG-|K@{-J5)5SPqR~Tg=ZA}|7C5;B z^1fVQ=;P<)&U7nt-SQY|kaLCGB5(UV&CxxCg-;Tsvvbdcr93S2 zB}UyJ{EI5mtAC_GTYIhXHRoORChAnQ-I~n%u=ih*Z4C1iF-$WB#U{T2q6;aGCa=gM zohU5LkI#aRxu4*ar-Xl>CVMA5-0>@2=dziZ_)=X`)j(n#B7sg{7qgx#YcDQtWhU(m zC6#$Ccy9f@GEx_F3*)&({C28uWh;wdWdCBQoo>O*ox}&7a0jeqF*xv_@=bOgs5tdT zGuv50hMUmL7u-?;Ygn?5uI?}bD$$$ZH2+v=;mWL5?(wZ+JF?{FOQrJdo-ov^U1_(+ z=#j(uE=uOkk-ZY&rIhg9*C6o-DS=sdBjVbDKRMSVrPI}pX0H2#O^QQ)p?(3pUc>2vtxf_`F$Gct?(P~K#i*74>%(`iWB%i{ z??l0?&>V{2E%@21YZz(t?~=zQRUplL)Zt{+piA!kKB|^;jBjhSn{z_5I@pD8>pAz_ zaX!Kjb=^AYPLQ9o6uKo{?k4zB6T?6$7Qjfl#S7fk1KZ0t zGQh7isI;*@CTrr;c4c2m+0M^}-E0E8Yl1*ech7p%($9cUY^5c^xjMk5%B4<}b>_Bg zCB9p#Z^v+|HgT6L#*ZuM^{Z{XKZq?>UyT)LE|x(HDYy($-vH0>s_)BpD&4`UA7N|w zGN4E~FbVHG4tW#WXaD{sW=d5?OaOXL5*S>izdPspQ7oBswbxpmJ9CT(l)9R^WNFGDr0` zPDQKB7XohWGHJ{$nhd7uaMYZmvJlhcPd_5ZVuQf&mE@7(0wx#(;(-I1$1r%|P#-u{ zEaoHNdUR_}WRo*H`}Bw%(T?Mv^^v~4KrsJ0PmDm{H~9ro5_z-fL*i_s$;cVZZE z*f({T$v*e9Df5?FGjNc`;A<9!WfxTJTOTzm!82uDg_7_@rsOEtkt8sRnlSK44J6jF zEgUu~x0h3EI`BdHZ(%O&`M+roF3~~+60?0TnU0aDd#ow6CH}qDxM2|3cPqB9X4ZVQ zt$xlth*&l8;0kw5WBU8$C#Blod11J%6#|cayi;uUxt-$sIL5kg zJ9r^;NP%=Qakp@yc#3s${+{)P_N9=%`}-=SKTzPO@-xBAZJQAUjSJPYz}(?t!8PP5 zoePdLI#lOhBR|Ky7DRG#y5e+Fc_bePlg?;-9*WVd&%qKC`>t?e<^phdq9?0QcEKUe zJ>-KB3hbjqoSKBtemE-)u^#@)9I&Bpez-~r6V!AcrvsAQLMR#+k`hhoG}C3{NpN*5 zc|%jKO3UW@leQi8udUwMGugRF$9rkA=3k3l;IfyWB>T!c03`p8L#hO;MJL`Elx->x z9G5_B&lx|sMiRIi1j_E$v(@+tnLHY2?k<0Pwyj_Eaw^N^$C35l4Mk#G%Rf#DLo!0u zx(9gM_bE4fU8F~+?&f<5B9otEN2Eg(Q}V1Hh>daMOMkl&fz^Wb0RN;+y8rO{+*b{X z;HMkR6&$G-?eAy|pEoTKy)wJ|OmIN2n$Zw__UDnHA?jBk)YWCJWwna%+U=z-@?7!W zrdpW{YJs<-jNjMAN@E1h`n~5@aXQhU#1kjatYOHx^;-AmK8?Vn85z5~=QU8!{pl)s z(eu97{?A5pV+`c0LWr{ez>Xcz2hD;b+`@DSI|u_Y1K=z@*kAh8m1un)kIx2oS>i;6 zhTfUFE7xQc?VC^eG%Em;Sp__{N8Bn!bL_y_r`;HkqTkumG0UF!m>uZ3X%y7WdH)#E zb$7MTk=NZw$jU4qX`4m2~Lz+d3Jou`fd#NSPlkQI9@ z*{84fN1P6azNiDCzgkZLcTW+wI+3TnqObagG@5zsi>cGwuHz@tfyxIe7&e&rb-8QQ ztj-SL+upN&L?ygiu;jQ*u$<^Gp+IEMlpD!@u~8tv;?qVS{@D~X!nbyu_2B-)VXkH1 zJ1iU^QPA?BR?6ykMyNAQ8{&{6QehzSqMPkp z>J0;p$?()0Guv|L#nOPO?|Xc4Uyo|BAXX3A!-ZQHGW7DDi~tAym&V!7ZWdp;9c}z5 z=;ls=b{ET{h|M6q`x$CJoBMbJ@VUKrt?M33xhzjh2S zULv*M#A}#)8Mb?nInl_wP4*Y~^x9tgj>c)8O!d@!+agZpk% zw88bRwW1Kn0$p3F9KSY9PyN}hJ*wNXa=C}h#eYgQF9kE6**}O}PYo_i4PnM~ z=<%*@^aq5HEdL1h{MA+&p6elfRHGfSn5(ry8jm{iq*UnX--EDqF( zFRcQU^%HFxyocjH4fHxS;*6>8Czh;s7L@HcO#VurV#o0AYgWwz86Bf_q|-gEi|nq& zAWzg7CBg6Vi+9<5x(d<;LjBuqp=#ZgcQp(I`V$!iZr#v2sh_UBdbnXARh*ZyzORQy z*))-4n@^&j_dok_Qo?p&c~Dcy)*YR1-(lNZNJ-JH;PSuX|;~GGodv${8=< zaFJm9IEtd(Fb9W+08s!OXwZUFea`Y#7_+MK?k%qZDy+J?4`Do2z5q>en|8#7{wJ*E zTrV1N&8QiQ?z?{#Vuzf1wIxFNP14!LSqe`zw+(k6*p8NR9#e1U)bv4#Pq93nal~Df z;^dCgeogNzf7f1X@`0g^EDZ%9r8}T56x)q?x<#adbZQ z{&Dk{?43{pv#T2)6@;vUgGH3#^d}&z@PkVfoTsTh|#kB8Oo} z3AaeZ5^R^oaO4(*+V>~UVOR?-EH^x3n=xTr0ovmXHPz|joIu_f?^}MDl@il*?jZu$ z*Ky9Q77b8G0LLPd=!9q_*JOl+fsZ_e0=M z^kO7*IQDdXb)}~RZvbxC`xG>0@Opr{wdxXR@YhDk;v%Z=q5u?$Jf7ed zg5<13g8Lg0Cu!7SgxY0@W>2eS$1Gg;#Hs9b?b1Zj zWj+6yw@fXZCwudBSBJRYEAu&1ZyS}@ZBZpEx6^gAztnsGy0;RFTjj7To@xm|A`|H6 zmji!tV1BEQo$H@XoUOdcN1T1gfAX069>Uh_sNe<@w%lUc*7GGSB>d(&TIm1E7_d6l z>K1bNBYwmCnRlbLDmtF3k0fhYysyMbF&B-YQH_%i`Jnyc!r~dMk;1kuUikHXM|Th!80w~Qq^7E8+lygJKWi5hPn$@}6|#G$GMrPUZLU%ISl%*GAD zzuxC&O(e>g52_n#DvKvCjU`ZBG;z}37UQuN(r$rF%+elnv?UA_Hq4 zNUfpDlK`c}DHg$I{Rdy@vL;2T-HXao2VXGoP5abWjkZhQh>P1t0gJU6z{2!zl^X+N z9s{mnK-;-t5fw-EMIGV|tNUb7yI?@KVD$OT?b!8ENsJGg`xi>vGfvuJI`E5qwBytG7s zCsCy#)OifHn!fNrAx91VJuCBYg@{>etdqH#aNMHSeY5PE zULJm_KG#yhIqv*!*TEONd2>aIuqWOb_+M4e{MQIXcCPTydclft@gD z{@ZNzb^{RzMCM_3eW|r;-Y*T1#_k4OEovPNW@-GldSU>&+~XJ*=W^Yro?-bBExx0( zj&mBvHw^d;@x@{@DJ@MYT_@NP+h>RByS#Sso4@Yv504ceG>`1Q-24!^{d~8utVs$S z&{37jgeG#Z{GZ1BM`@1EPY37T1J;};;k=OoSdkEiChIxNQ>+V;uFozZ$eRdRV`FRb z2XdeZx!fqyb3Q^th|*j7+B4y6ydR1Og2SIqlHsAG1Z^%F-nk z`^|Xv2~L$0L!>zxk)H@oz7%Ma%J4I{B313&{l7sJD+foMRX>y!NglOu4W^XK%kRu156h`J0ArJjN6y&G{_im;#eR;b*T_0@19$1EMV4w z*98e#HcifhtT5kb*KX-{{?^N?sz>XnlRY6+4d=YlaFPn2k%oQ{|6?w@m-IS3O=A$Q zepF(qQmD~|4-~z4TPr%rjB2-bWEAC9eVQp!Sv*RI}etLB$NQ(ZCDNu{N8+;2lL}mWZ=$gjF`^^ z*ik*2p&r3-_sEAZeikE>zTGGh&E^(LJ)M%?%5vu7dmDUIpGAaAksGmsQ1wzMjyjJV zoa*X`GR~%+*1=glp=x^vlIJ5-ff?86d^+!q7g#h`295)i>XQA;zTiC-ik)p^u}!vl zPEGKhb4l`Ox8#uAoOxrd|FlC0=_%2Gd_+*@RStu|)i_HDwCbFm?>Qv-rXB<9SxO}J zrWzRMLP!pzP^RfR)Cv+d3Y$~0D*f%g8&i#@8wRX@TbyJMjwG@qRR!+-87y!LAA;`r zpag+Q9{2CQ)IJ0EmJ^9*9x*nv&t<+3QjvcFHG=!Nxqw8!{QBj(i)Z63h9}APZu3J!g9oJn&bElZ|&E!%QxG#GHeEXot3*cFL6u%7cy|ku1xnz( zhL|dnORmZnD_Z>(S=t<80&m}l#`#Enc-2}E5QU7vQVwgVps z#&z6|p&|DyITk*?=0O)LlX9R3|fVmq06A9QvnRCD@D?e87iE zeg<^yBZMU9^Y%g3i%bPddgW@-Q2zIF` z^kf2ds;j7GLVcOSF`6jKD$z-y6~v6bWBNuHZODtF$Mox(>A@g74lAjr0KF9j8Q4=D z<{hm(#3Mju&x}_jPqMEjbQ{+rizoi>KSGioTM^8>mkD-?NVwC?2rtP4RC0qSteCnGK!lLO+bh25RbYozv3?YfvK+96G7<7b+x1C|_kr zkWx)*d)(K>Dd8Ev_x2o*5DTFpb$o^~e9&u(Oey?q z{2yRJj-9);njzvUhL90Q!ejq?J^@I=nvqY+;X^i9Q9LiHm$DJ>y7h;%1rjk4C9*H| z2|zw6pUR9=;l27Z9y#lqHhQO7y>0Zqj)+9V*4s|8l#1*P;^{2$)p3#Q` zZ=nXm?q<(nw7~oFOFiY0FSajVg;b)sQS{C9pF zf$<#&po2%(pdL2~k7(Y2H|`9BvATCbF5V<9vBYwHH|KC%^0FGx8^_}?FJd5qCioLk zX9>e6Fuob-SdKi6{<~fEp4y{#n@V`H#J|OGg5{}FchFCg^z(9O;9Wi{y*=d;(ZtcB zMuRS|j}xO#d%siyyB+5cFWSm45#Drs%ArbLQPwUSKt50iGzx_-BqBZ8fK2)EKfgLc zvmLVc%f}jZR6U=H{QATAhN)YuBL@2R^>QcP4;Tmw%M2(n`LM`z-_B@o$$2)G`T?mL zAu8I-rn>%_{`t>j3!T*POVxHAc!mGpXMely|AiIsUpTl6g-I?%l{yncfb$RqiRpda cb#%g_6Zl;GV~PTAsywE3OIM@x#>40T2XYAF00000 literal 14380 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 q51i|1NY#A)zhxvRh`r{1qUw%t5HCRnR(