Compare commits
1 Commits
190936d799
...
add-licens
Author | SHA1 | Date | |
---|---|---|---|
1e663f36c8 |
@@ -66,6 +66,17 @@ to the end commit message body on a new line.
|
|||||||
|
|
||||||
Use **rebase** to keep your branch up to date.
|
Use **rebase** to keep your branch up to date.
|
||||||
|
|
||||||
|
## Licensing
|
||||||
|
|
||||||
|
For new source code files and for existing ones without a license, you need to add the following header to the beginning of the file:
|
||||||
|
```asm
|
||||||
|
; SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
; Program - Brief description.
|
||||||
|
; Copyright (C) 2011-2025 KolibriOS team
|
||||||
|
```
|
||||||
|
|
||||||
|
Be careful when setting copyright and date interval. Review the file's history to verify its origin.
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
We hope this small instructions will help you to get familiar with KolibriOS contribution rules and inspire you to participate in the life of our project.
|
We hope this small instructions will help you to get familiar with KolibriOS contribution rules and inspire you to participate in the life of our project.
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# KolibriOS
|
# KolibriOS
|
||||||
|
|
||||||
[](./COPYING.TXT)
|
[](./LICENSE)
|
||||||
[](https://git.kolibrios.org/KolibriOS/kolibrios/actions)
|
[](https://git.kolibrios.org/KolibriOS/kolibrios/actions)
|
||||||
|
|
||||||
KolibriOS is a hobby operating system for x86-compatible computers, which is currently being developed by a small but passionate team of enthusiasts.
|
KolibriOS is a hobby operating system for x86-compatible computers, which is currently being developed by a small but passionate team of enthusiasts.
|
||||||
|
@@ -119,7 +119,7 @@
|
|||||||
45 <20><><EFBFBD><EFBFBD>⮩ <20><>ਭ<EFBFBD><E0A8AD><EFBFBD><EFBFBD><EFBFBD> |easyshot
|
45 <20><><EFBFBD><EFBFBD>⮩ <20><>ਭ<EFBFBD><E0A8AD><EFBFBD><EFBFBD><EFBFBD> |easyshot
|
||||||
29 FB2 <20><>⠫<EFBFBD><E2A0AB> |fb2read
|
29 FB2 <20><>⠫<EFBFBD><E2A0AB> |fb2read
|
||||||
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |aclock
|
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |aclock
|
||||||
21 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |/kolibrios/utils/period
|
21 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |period
|
||||||
59 <20>७<EFBFBD><E0A5AD><EFBFBD><EFBFBD> KJ|ABuIIIA |games/klavisha
|
59 <20>७<EFBFBD><E0A5AD><EFBFBD><EFBFBD> KJ|ABuIIIA |games/klavisha
|
||||||
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |demos/bcdclk
|
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |demos/bcdclk
|
||||||
53 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |timer
|
53 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |timer
|
||||||
|
@@ -270,15 +270,11 @@ void TWebBrowser::tag_h1234_caption()
|
|||||||
void TWebBrowser::tag_kosicon()
|
void TWebBrowser::tag_kosicon()
|
||||||
{
|
{
|
||||||
dword imgbuf[44];
|
dword imgbuf[44];
|
||||||
dword maxicon;
|
|
||||||
dword shared_i18 = memopen("ICONS18", NULL, SHM_READ);
|
dword shared_i18 = memopen("ICONS18", NULL, SHM_READ);
|
||||||
maxicon = EDX / 18 / 18 / 4;
|
|
||||||
if (shared_i18) && (tag.get_number_of("n")) {
|
if (shared_i18) && (tag.get_number_of("n")) {
|
||||||
if (tag.number < maxicon) {
|
if (draw_x + 18 > canvas.bufw) NewLine();
|
||||||
if (draw_x + 18 > canvas.bufw) NewLine();
|
canvas.DrawImage(draw_x, draw_y-2, 18, 18, 18*18*4*tag.number+shared_i18);
|
||||||
canvas.DrawImage(draw_x, draw_y-2, 18, 18, 18*18*4*tag.number+shared_i18);
|
draw_x += 22;
|
||||||
draw_x += 22;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -571,10 +571,10 @@ void OpenPage(dword _open_URL)
|
|||||||
//INTERNAL PAGE
|
//INTERNAL PAGE
|
||||||
history.add(#new_url);
|
history.add(#new_url);
|
||||||
WB1.custom_encoding = -1;
|
WB1.custom_encoding = -1;
|
||||||
if (streq(#new_url, URL_SERVICE_HOMEPAGE)) LoadInternalPage(#buildin_page_home, sizeof(buildin_page_home));
|
if (streq(#new_url, URL_SERVICE_HOMEPAGE)) LoadInternalPage(#buildin_page_home, sizeof(buildin_page_home)-1);
|
||||||
else if (streq(#new_url, URL_SERVICE_TEST)) LoadInternalPage(#buildin_page_test, sizeof(buildin_page_test));
|
else if (streq(#new_url, URL_SERVICE_TEST)) LoadInternalPage(#buildin_page_test, sizeof(buildin_page_test)-1);
|
||||||
else if (streq(#new_url, URL_SERVICE_HISTORY)) ShowHistory();
|
else if (streq(#new_url, URL_SERVICE_HISTORY)) ShowHistory();
|
||||||
else LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
else LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
|
||||||
|
|
||||||
} else if (!strncmp(#new_url,"http:",5)) || (!strncmp(#new_url,"https:",6)) {
|
} else if (!strncmp(#new_url,"http:",5)) || (!strncmp(#new_url,"https:",6)) {
|
||||||
//WEB PAGE
|
//WEB PAGE
|
||||||
@@ -589,7 +589,7 @@ void OpenPage(dword _open_URL)
|
|||||||
|
|
||||||
if (!http.transfer) {
|
if (!http.transfer) {
|
||||||
history.add(#new_url);
|
history.add(#new_url);
|
||||||
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//LOCAL PAGE
|
//LOCAL PAGE
|
||||||
@@ -712,7 +712,7 @@ void EventSubmitOmnibox()
|
|||||||
|
|
||||||
void LoadInternalPage(dword _bufdata, _in_bufsize){
|
void LoadInternalPage(dword _bufdata, _in_bufsize){
|
||||||
if (!_bufdata) || (!_in_bufsize) {
|
if (!_bufdata) || (!_in_bufsize) {
|
||||||
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
|
||||||
} else {
|
} else {
|
||||||
WB1.list.first = 0; //scroll page to the top
|
WB1.list.first = 0; //scroll page to the top
|
||||||
DrawOmnibox();
|
DrawOmnibox();
|
||||||
|
@@ -112,4 +112,4 @@ char editbox_icons[] = FROM "res/editbox_icons.raw";
|
|||||||
|
|
||||||
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
||||||
|
|
||||||
char version[]="WebView 3.9";
|
char version[]="WebView 3.85";
|
@@ -1,49 +1,17 @@
|
|||||||
<html><head><title>New tab</title></head>
|
<html>
|
||||||
<body bgcolor=#fff>
|
<head>
|
||||||
|
<title>Homepage</title>
|
||||||
|
</head>
|
||||||
|
<body><pre>Welcome to WebView a Text-Based Browser.
|
||||||
|
|
||||||
<table><tr><td width=20><td width=210><pre>
|
KolibriOS Bookmarks:
|
||||||
___________________
|
1. <a href=//kolibrios.org>Homepage</a>
|
||||||
|# : : #|
|
2. <a href="//builds.kolibrios.org">Night-builds</a>
|
||||||
| : WebView : |
|
3. <a href="//ftp.kolibrios.org">FTP Server</a>
|
||||||
| : TextBased : |
|
|
||||||
| : Browser : |
|
|
||||||
| : : |
|
|
||||||
| :_____________: |
|
|
||||||
| ___________ |
|
|
||||||
| | __ | |
|
|
||||||
| || | | |
|
|
||||||
\____||__|_______|__|<font color=#DDD>lc</font>
|
|
||||||
|
|
||||||
<font bg=#F8F15B> web <font bg=#FF5A7E color=#fff> 1.0 <font bg=#47D018> compatable
|
<font bg=#F8F15B>By the way,</font>
|
||||||
<font bg=#3CE7FF> </font></font></font></font>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
</pre>
|
|
||||||
<kosicon n=58><a href=//kolibrios.org>Homepage</a>
|
|
||||||
<kosicon n=50><a href="//builds.kolibrios.org">Night-builds</a>
|
|
||||||
<kosicon n=50><a href="//ftp.kolibrios.org">FTP Server</a>
|
|
||||||
<pre>
|
|
||||||
|
|
||||||
By the way,
|
|
||||||
<font color="#555555">• You can check for browser updates from the main menu.
|
<font color="#555555">• You can check for browser updates from the main menu.
|
||||||
• To run a web search, type a text in the adress box and press Ctrl+Enter.
|
• To run a web search, type a text in the adress box and press Ctrl+Enter.
|
||||||
• Pressing F6 moves a text cursor to the omnibox.
|
• Pressing F6 moves a text cursor to the omnibox.
|
||||||
• You can manually change the encoding of a page by clicking on a label in the bottom right corner.
|
• Click on a label in the bottom right corner to change the encoding of a page.
|
||||||
|
</font>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
~+
|
|
||||||
|
|
||||||
* +
|
|
||||||
' |
|
|
||||||
() .-.,="``"=. - o -
|
|
||||||
'=/_ \ |
|
|
||||||
* | '=._ |
|
|
||||||
\ `=./`, '
|
|
||||||
. '=.__.=' `=' *
|
|
||||||
+ +
|
|
||||||
O * ' .<font color=#DDD>jgs</font>
|
|
||||||
|
@@ -1,49 +1,15 @@
|
|||||||
<html><head><title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></title></head>
|
<html><head><meta charset="cp-866">
|
||||||
<body bgcolor=#fff>
|
<title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD><E0A0AD><EFBFBD></title></head>
|
||||||
|
<body><pre><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⥪<>⮢<EFBFBD><E2AEA2> <20><><EFBFBD>㧥<EFBFBD> WebView!
|
||||||
|
|
||||||
<table><tr><td width=20><td width=210><pre>
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> KolibriOS:<ol>
|
||||||
___________________
|
<li><a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD>樠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᠩ<></a>
|
||||||
|# : : #|
|
<li><a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a>
|
||||||
| : WebView : |
|
<li><a href="//ftp.kolibrios.org">FTP <20><>ࢥ<EFBFBD></a></ol>
|
||||||
| : <20><><EFBFBD><EFBFBD>⮢<EFBFBD><E2AEA2> : |
|
|
||||||
| : <20><><EFBFBD>㧥<EFBFBD> : |
|
|
||||||
| : : |
|
|
||||||
| :_____________: |
|
|
||||||
| ___________ |
|
|
||||||
| | __ | |
|
|
||||||
| || | | |
|
|
||||||
\____||__|_______|__|<font color=#DDD>lc</font>
|
|
||||||
|
|
||||||
<font bg=#F8F15B> web <font bg=#FF5A7E color=#fff> 1.0 <font bg=#47D018> compatable
|
<font bg=#F8F15B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,</font>
|
||||||
<font bg=#3CE7FF> </font></font></font></font>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
</pre>
|
|
||||||
<kosicon n=58><a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD>樠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᠩ<></a>
|
|
||||||
<kosicon n=50><a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a>
|
|
||||||
<kosicon n=50><a href="//ftp.kolibrios.org">FTP <20><>ࢥ<EFBFBD></a>
|
|
||||||
<pre>
|
|
||||||
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|
||||||
<font color="#555555">• <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>稥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<font color="#555555">• <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>稥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
• <20><><EFBFBD> <20><><EFBFBD>᪠ <20> Google <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>᭮<EFBFBD> <20><>ப<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ctrl+Enter
|
• <20><><EFBFBD> <20><><EFBFBD>᪠ <20> Google <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>᭮<EFBFBD> <20><>ப<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ctrl+Enter
|
||||||
• <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F6 <20><>६<EFBFBD>頥<EFBFBD> ⥪<>⮢<EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
• <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F6 <20><>६<EFBFBD>頥<EFBFBD> ⥪<>⮢<EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
• <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><>࠭<EFBFBD><E0A0AD><EFBFBD>, <20><><EFBFBD> <20>⮣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㣫<> <20><><EFBFBD><EFBFBD>.
|
• <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><>࠭<EFBFBD><E0A0AD><EFBFBD>, <20><><EFBFBD> <20>⮣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㣫<> <20><><EFBFBD><EFBFBD>.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
~+
|
|
||||||
|
|
||||||
* +
|
|
||||||
' |
|
|
||||||
() .-.,="``"=. - o -
|
|
||||||
'=/_ \ |
|
|
||||||
* | '=._ |
|
|
||||||
\ `=./`, '
|
|
||||||
. '=.__.=' `=' *
|
|
||||||
+ +
|
|
||||||
O * ' .<font color=#DDD>jgs</font>
|
|
@@ -1,2 +0,0 @@
|
|||||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
|
||||||
tup.rule("flag.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "flag")
|
|
@@ -1,311 +0,0 @@
|
|||||||
use32
|
|
||||||
org 0
|
|
||||||
db 'MENUET01'
|
|
||||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
|
||||||
|
|
||||||
include '../../proc32.inc'
|
|
||||||
include '../../macros.inc'
|
|
||||||
include '../../KOSfuncs.inc'
|
|
||||||
include '../../load_lib.mac'
|
|
||||||
include '../../dll.inc'
|
|
||||||
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
|
|
||||||
include '../../develop/libraries/TinyGL/asm_fork/examples/fps.inc'
|
|
||||||
|
|
||||||
@use_library
|
|
||||||
|
|
||||||
;Macro for double type parameters (8 bytes)
|
|
||||||
macro glpush GLDoubleVar {
|
|
||||||
push dword[GLDoubleVar+4]
|
|
||||||
push dword[GLDoubleVar]
|
|
||||||
}
|
|
||||||
|
|
||||||
align 4
|
|
||||||
start:
|
|
||||||
load_library name_tgl, library_path, system_path, import_tinygl
|
|
||||||
cmp eax,SF_TERMINATE_PROCESS
|
|
||||||
jz button.exit
|
|
||||||
|
|
||||||
mcall SF_SET_EVENTS_MASK, 0x27
|
|
||||||
|
|
||||||
; *** init ***
|
|
||||||
stdcall [kosglMakeCurrent], 0,15,600,380,ctx1
|
|
||||||
|
|
||||||
stdcall [glMatrixMode], GL_MODELVIEW
|
|
||||||
call [glLoadIdentity]
|
|
||||||
|
|
||||||
stdcall [glClearColor], 0.549, 0.549, 0.588, 1.0
|
|
||||||
|
|
||||||
;stdcall [glEnable], GL_LIGHTING
|
|
||||||
;stdcall [glLightf], GL_LIGHT0, GL_SPOT_EXPONENT, 0.0
|
|
||||||
;stdcall [glLightf], GL_LIGHT0, GL_SPOT_CUTOFF, 180.0
|
|
||||||
;stdcall [glEnable], GL_LIGHT0
|
|
||||||
|
|
||||||
stdcall [glLightfv], GL_LIGHT0, GL_POSITION, lightpos
|
|
||||||
stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, lightdirect
|
|
||||||
|
|
||||||
stdcall [glEnable], GL_COLOR_MATERIAL
|
|
||||||
|
|
||||||
glpush p3
|
|
||||||
stdcall [glClearDepth]
|
|
||||||
stdcall [glEnable], GL_CULL_FACE
|
|
||||||
stdcall [glEnable], GL_DEPTH_TEST
|
|
||||||
|
|
||||||
mcall SF_KEYBOARD, SSF_SET_INPUT_MODE, 1
|
|
||||||
fninit
|
|
||||||
|
|
||||||
stdcall reshape, 600,380
|
|
||||||
; *** end init ***
|
|
||||||
|
|
||||||
|
|
||||||
align 4
|
|
||||||
red_win:
|
|
||||||
call draw_window
|
|
||||||
mcall SF_THREAD_INFO, procinfo,-1
|
|
||||||
mov eax,dword[procinfo.box.height]
|
|
||||||
cmp eax,120
|
|
||||||
jge @f
|
|
||||||
mov eax,120 ;min size
|
|
||||||
@@:
|
|
||||||
sub eax,43
|
|
||||||
mov ebx,dword[procinfo.box.width]
|
|
||||||
cmp ebx,200
|
|
||||||
jge @f
|
|
||||||
mov ebx,200
|
|
||||||
@@:
|
|
||||||
sub ebx,10
|
|
||||||
stdcall reshape, ebx,eax
|
|
||||||
.end0:
|
|
||||||
|
|
||||||
align 16
|
|
||||||
still:
|
|
||||||
call draw_3d
|
|
||||||
cmp dword[stop],1
|
|
||||||
je @f
|
|
||||||
stdcall Fps, 365,4
|
|
||||||
|
|
||||||
mov dword[esp-4],eax
|
|
||||||
fild dword[esp-4]
|
|
||||||
fmul dword[delt_3]
|
|
||||||
fchs
|
|
||||||
fadd dword[dangle]
|
|
||||||
fstp dword[dangle] ;dangle -= 0.01*Fps(x,y)
|
|
||||||
|
|
||||||
;mcall SF_CHECK_EVENT
|
|
||||||
mcall SF_WAIT_EVENT_TIMEOUT, 1
|
|
||||||
jmp .end0
|
|
||||||
align 4
|
|
||||||
@@:
|
|
||||||
mcall SF_WAIT_EVENT
|
|
||||||
.end0:
|
|
||||||
cmp al, EV_REDRAW
|
|
||||||
jz red_win
|
|
||||||
cmp al, EV_KEY
|
|
||||||
jz key
|
|
||||||
cmp al, EV_BUTTON
|
|
||||||
jz button
|
|
||||||
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
|
|
||||||
; new window size or exposure
|
|
||||||
align 4
|
|
||||||
proc reshape, width:dword, height:dword
|
|
||||||
locals
|
|
||||||
dxy dq ?
|
|
||||||
endl
|
|
||||||
stdcall [glViewport], 0, 0, [width], [height]
|
|
||||||
stdcall [glMatrixMode], GL_PROJECTION
|
|
||||||
call [glLoadIdentity]
|
|
||||||
fild dword[width]
|
|
||||||
fidiv dword[height]
|
|
||||||
fstp qword[dxy] ;dxy = width/height
|
|
||||||
glpush p4
|
|
||||||
glpush p3
|
|
||||||
glpush dxy
|
|
||||||
glpush p1
|
|
||||||
call [gluPerspective] ;28.0, width/height, 1.0, 40.0
|
|
||||||
|
|
||||||
stdcall [glMatrixMode], GL_MODELVIEW
|
|
||||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
align 4
|
|
||||||
p1 dq 28.0
|
|
||||||
p3 dq 1.0
|
|
||||||
p4 dq 40.0
|
|
||||||
|
|
||||||
align 4
|
|
||||||
draw_window:
|
|
||||||
pushad
|
|
||||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
|
||||||
|
|
||||||
mcall SF_CREATE_WINDOW, (50 shl 16)+609,(30 shl 16)+425,0x33404040,,title1
|
|
||||||
call [kosglSwapBuffers]
|
|
||||||
|
|
||||||
;Title
|
|
||||||
mcall SF_DRAW_TEXT, (338 shl 16)+4, 0xc0c0c0, fps, fps.end-fps
|
|
||||||
mcall SF_DRAW_TEXT, (8 shl 16)+4, 0xc0c0c0, title3, title3.end-title3
|
|
||||||
;mcall SF_DRAW_TEXT, (180 shl 16)+4, 0xc0c0c0, title2, title2.end-title2
|
|
||||||
|
|
||||||
mcall SF_REDRAW,SSF_END_DRAW
|
|
||||||
popad
|
|
||||||
ret
|
|
||||||
|
|
||||||
align 4
|
|
||||||
key:
|
|
||||||
mcall SF_GET_KEY
|
|
||||||
|
|
||||||
cmp ah,27 ;Esc
|
|
||||||
je button.exit
|
|
||||||
|
|
||||||
cmp ah,112 ;P
|
|
||||||
jne @f
|
|
||||||
xor dword[stop],1
|
|
||||||
jmp still
|
|
||||||
@@:
|
|
||||||
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
align 4
|
|
||||||
button:
|
|
||||||
mcall SF_GET_BUTTON
|
|
||||||
cmp ah,1
|
|
||||||
jne still
|
|
||||||
.exit:
|
|
||||||
mcall SF_TERMINATE_PROCESS
|
|
||||||
|
|
||||||
|
|
||||||
align 4
|
|
||||||
title1: db 'TinyGL in KolibriOS'
|
|
||||||
.end: db 0
|
|
||||||
;title2: db 'F full screen'
|
|
||||||
;.end: db 0
|
|
||||||
title3: db 'ESC - exit, P - pause'
|
|
||||||
.end: db 0
|
|
||||||
fps: db 'FPS:'
|
|
||||||
.end: db 0
|
|
||||||
|
|
||||||
align 16
|
|
||||||
proc draw_3d uses ebx ecx edx esi edi
|
|
||||||
locals
|
|
||||||
z dd ?
|
|
||||||
endl
|
|
||||||
call [glLoadIdentity]
|
|
||||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT
|
|
||||||
stdcall [glTranslatef], 0.0, 0.0, -2.0
|
|
||||||
stdcall [glRotatef], 10.0, 0.0, 0.0, 1.0
|
|
||||||
stdcall [glRotatef], 43.0, 0.0, 1.0, 0.0
|
|
||||||
stdcall [glTranslatef], -0.6, -0.2, -0.1
|
|
||||||
|
|
||||||
mov edi, logo+9*41 ;edi = logo[9][0]
|
|
||||||
mov esi, 41 ;esi = i
|
|
||||||
align 4
|
|
||||||
.cycle0: ;for(int i=0;i<41;i++)
|
|
||||||
stdcall [glTranslatef], 0.045, 0.0, 0.0
|
|
||||||
call [glPushMatrix]
|
|
||||||
fld dword[angle]
|
|
||||||
fsin
|
|
||||||
fmul dword[delt_1]
|
|
||||||
fstp dword[z] ;= 0.08*sin(angle)
|
|
||||||
|
|
||||||
fld dword[angle]
|
|
||||||
fadd dword[delt_2]
|
|
||||||
fstp dword[angle] ;angle += 0.2
|
|
||||||
|
|
||||||
mov ecx, 9
|
|
||||||
mov ebx, edi
|
|
||||||
|
|
||||||
; ebx = @temp1, ecx = j
|
|
||||||
.cycle1: ;for(int j=9;j>=0;j--)
|
|
||||||
cmp byte[ebx],0 ;if(logo[j][i])
|
|
||||||
je @f
|
|
||||||
push 0.0 ;b
|
|
||||||
push 0.0 ;g
|
|
||||||
push 1.0 ;r
|
|
||||||
jmp .end_c2
|
|
||||||
@@:
|
|
||||||
push 0.945 ;b
|
|
||||||
push 0.855 ;g
|
|
||||||
push 0.859 ;r
|
|
||||||
.end_c2:
|
|
||||||
call [glColor3f]
|
|
||||||
stdcall [glTranslatef], 0.0, 0.045, 0.0
|
|
||||||
stdcall [glBegin], GL_QUADS
|
|
||||||
stdcall [glVertex3f], 0.0, -0.04,[z]
|
|
||||||
stdcall [glVertex3f], 0.04,-0.04,[z]
|
|
||||||
stdcall [glVertex3f], 0.04, 0.0, [z]
|
|
||||||
stdcall [glVertex3f], 0.0, 0.0, [z]
|
|
||||||
call [glEnd]
|
|
||||||
add ebx, -41
|
|
||||||
dec ecx
|
|
||||||
jnz .cycle1
|
|
||||||
|
|
||||||
call [glPopMatrix]
|
|
||||||
inc edi ;edi = logo[9][i]
|
|
||||||
dec esi
|
|
||||||
jnz .cycle0
|
|
||||||
|
|
||||||
mov edx,dword[dangle]
|
|
||||||
mov dword[angle],edx
|
|
||||||
call [kosglSwapBuffers]
|
|
||||||
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
align 4
|
|
||||||
delt_1 dd 0.08
|
|
||||||
delt_2 dd 0.2
|
|
||||||
delt_3 dd 0.01
|
|
||||||
|
|
||||||
lightpos dd 2.0, 0.0, -2.5, 1.0
|
|
||||||
lightdirect dd 0.0, 0.0, -0.7
|
|
||||||
angle dd 0.0
|
|
||||||
dangle dd 0.0
|
|
||||||
|
|
||||||
stop dd 0
|
|
||||||
|
|
||||||
;[10][41]
|
|
||||||
logo db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
db 0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,1,0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,0,\
|
|
||||||
0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,\
|
|
||||||
0,0,1,0,1,0,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,1,0,0,0,0,\
|
|
||||||
0,0,1,1,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,\
|
|
||||||
0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,\
|
|
||||||
0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,0
|
|
||||||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------
|
|
||||||
align 4
|
|
||||||
import_tinygl:
|
|
||||||
|
|
||||||
macro E_LIB n
|
|
||||||
{
|
|
||||||
n dd sz_#n
|
|
||||||
}
|
|
||||||
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
|
|
||||||
dd 0,0
|
|
||||||
macro E_LIB n
|
|
||||||
{
|
|
||||||
sz_#n db `n,0
|
|
||||||
}
|
|
||||||
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
|
|
||||||
|
|
||||||
;--------------------------------------------------
|
|
||||||
system_path db '/sys/lib/'
|
|
||||||
name_tgl db 'tinygl.obj',0
|
|
||||||
;--------------------------------------------------
|
|
||||||
|
|
||||||
align 16
|
|
||||||
i_end:
|
|
||||||
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
|
|
||||||
;sizeof.TinyGLContext = 28
|
|
||||||
procinfo process_information
|
|
||||||
cur_dir_path rb 4096
|
|
||||||
library_path rb 4096
|
|
||||||
rb 4096
|
|
||||||
stacktop:
|
|
||||||
mem:
|
|
@@ -1082,7 +1082,7 @@ l_libs_start:
|
|||||||
lib_2 l_libs lib_name_2, file_name, system_dir_2, import_box_lib
|
lib_2 l_libs lib_name_2, file_name, system_dir_2, import_box_lib
|
||||||
lib_3 l_libs lib_name_3, file_name, system_dir_3, import_buf2d
|
lib_3 l_libs lib_name_3, file_name, system_dir_3, import_buf2d
|
||||||
lib_4 l_libs lib_name_4, file_name, system_dir_4, import_libkmenu
|
lib_4 l_libs lib_name_4, file_name, system_dir_4, import_libkmenu
|
||||||
lib_5 l_libs lib_name_5, file_name, system_dir_5, import_tinygl
|
lib_5 l_libs lib_name_5, file_name, system_dir_5, import_lib_tinygl
|
||||||
lib_6 l_libs lib_name_6, file_name, system_dir_6, import_libini
|
lib_6 l_libs lib_name_6, file_name, system_dir_6, import_libini
|
||||||
l_libs_end:
|
l_libs_end:
|
||||||
|
|
||||||
@@ -1287,7 +1287,7 @@ dd 0,0
|
|||||||
akmenuitem_draw db 'kmenuitem_draw',0
|
akmenuitem_draw db 'kmenuitem_draw',0
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
import_tinygl:
|
import_lib_tinygl:
|
||||||
macro E_LIB n
|
macro E_LIB n
|
||||||
{
|
{
|
||||||
n dd sz_#n
|
n dd sz_#n
|
||||||
@@ -1343,7 +1343,7 @@ buf_1:
|
|||||||
align 4
|
align 4
|
||||||
el_focus dd tree1
|
el_focus dd tree1
|
||||||
tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\
|
tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\
|
||||||
16,16, 0xffffff,0xb0d0ff,0x10400040, 5,35,195-16,250, 16,list_offs_text,0,\
|
16,16, 0xffffff,0xb0d0ff,0x400040, 5,35,195-16,250, 16,list_offs_text,0,\
|
||||||
el_focus,w_scr_t1,0
|
el_focus,w_scr_t1,0
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@@ -1362,9 +1362,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
|
|||||||
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> 䮭<><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20>ᢥ饭<E1A2A5><E9A5AD>
|
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> 䮭<><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20>ᢥ饭<E1A2A5><E9A5AD>
|
||||||
|
|
||||||
if lang eq ru_RU
|
if lang eq ru_RU
|
||||||
capt db 'info 3ds <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 14.04.25',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
capt db 'info 3ds <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 29.09.20',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
else ; Default to en_US
|
else ; Default to en_US
|
||||||
capt db 'info 3ds version 14.04.25',0 ;window caption
|
capt db 'info 3ds version 29.09.20',0 ;window caption
|
||||||
end if
|
end if
|
||||||
|
|
||||||
align 16
|
align 16
|
||||||
|
@@ -1408,7 +1408,7 @@ buf_1:
|
|||||||
align 4
|
align 4
|
||||||
el_focus dd tree1
|
el_focus dd tree1
|
||||||
tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\
|
tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\
|
||||||
16,16, 0xffffff,0xb0d0ff,0x10400040, 5,47,195-16,250, 16,list_offs_text,0, el_focus,\
|
16,16, 0xffffff,0xb0d0ff,0x400040, 5,47,195-16,250, 16,list_offs_text,0, el_focus,\
|
||||||
w_scr_t1,0
|
w_scr_t1,0
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@@ -1427,9 +1427,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
|
|||||||
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> 䮭<><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20>ᢥ饭<E1A2A5><E9A5AD>
|
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> 䮭<><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20>ᢥ饭<E1A2A5><E9A5AD>
|
||||||
|
|
||||||
if lang eq ru_RU
|
if lang eq ru_RU
|
||||||
capt db 'info 3ds [user] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 14.04.25',0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
capt db 'info 3ds [user] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 29.09.20',0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
else ; Default to en_US
|
else ; Default to en_US
|
||||||
capt db 'info 3ds [user] version 14.04.25',0 ; Window caption
|
capt db 'info 3ds [user] version 29.09.20',0 ; Window caption
|
||||||
end if
|
end if
|
||||||
|
|
||||||
align 16
|
align 16
|
||||||
|
@@ -812,8 +812,9 @@ proc draw_3d uses eax ebx ecx edi, o_data:dword
|
|||||||
@@:
|
@@:
|
||||||
stdcall [glDisable],GL_LIGHTING
|
stdcall [glDisable],GL_LIGHTING
|
||||||
.end_l:
|
.end_l:
|
||||||
|
stdcall [glTranslatef], 0.0,0.0,0.5 ;correct for z
|
||||||
stdcall [glScalef], [edi+obj_3d.x_scale],[edi+obj_3d.y_scale],[edi+obj_3d.z_scale]
|
stdcall [glScalef], [edi+obj_3d.x_scale],[edi+obj_3d.y_scale],[edi+obj_3d.z_scale]
|
||||||
stdcall [glScalef], 1.0,1.0,1.4 ;correct for z
|
stdcall [glScalef], 1.0,1.0,0.7 ;correct for z
|
||||||
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
||||||
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
||||||
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
||||||
|
@@ -951,12 +951,13 @@ endl
|
|||||||
endp
|
endp
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
proc glClearDepth uses eax, depth:qword
|
proc glClearDepth uses eax, depth:dword
|
||||||
locals
|
locals
|
||||||
p rd 2
|
p rd 2
|
||||||
endl
|
endl
|
||||||
mov dword[p],OP_ClearDepth
|
mov dword[p],OP_ClearDepth
|
||||||
fld qword[depth]
|
mov eax,[depth]
|
||||||
|
fld qword[eax]
|
||||||
fstp dword[p+4]
|
fstp dword[p+4]
|
||||||
|
|
||||||
lea eax,[ebp-8] ;=sizeof(dd)*2
|
lea eax,[ebp-8] ;=sizeof(dd)*2
|
||||||
|
@@ -23,7 +23,8 @@ endl
|
|||||||
imul ecx,ebx
|
imul ecx,ebx
|
||||||
shl ecx,2
|
shl ecx,2
|
||||||
add ecx,[eax+GLContext.color_array] ;ecx = &context.color_array[i]
|
add ecx,[eax+GLContext.color_array] ;ecx = &context.color_array[i]
|
||||||
lea ebx,[ebp-20] ;=sizeof(dd)*5
|
mov ebx,ebp
|
||||||
|
sub ebx,20 ;=sizeof(dd)*5
|
||||||
mov edx,[ecx]
|
mov edx,[ecx]
|
||||||
mov [ebx+4],edx
|
mov [ebx+4],edx
|
||||||
mov edx,[ecx+4]
|
mov edx,[ecx+4]
|
||||||
@@ -47,7 +48,8 @@ endl
|
|||||||
imul esi,ebx
|
imul esi,ebx
|
||||||
shl esi,2
|
shl esi,2
|
||||||
add esi,[eax+GLContext.normal_array] ;esi = &normal_array[ebx * (3 + c->normal_array_stride)]
|
add esi,[eax+GLContext.normal_array] ;esi = &normal_array[ebx * (3 + c->normal_array_stride)]
|
||||||
lea edi,[eax+GLContext.current_normal]
|
mov edi,eax
|
||||||
|
add edi,GLContext.current_normal
|
||||||
mov ecx,3
|
mov ecx,3
|
||||||
rep movsd
|
rep movsd
|
||||||
mov dword[edi],0.0
|
mov dword[edi],0.0
|
||||||
@@ -90,7 +92,8 @@ endl
|
|||||||
imul ecx,ebx
|
imul ecx,ebx
|
||||||
shl ecx,2
|
shl ecx,2
|
||||||
add ecx,[eax+GLContext.vertex_array] ;ecx = &context.vertex_array[i]
|
add ecx,[eax+GLContext.vertex_array] ;ecx = &context.vertex_array[i]
|
||||||
lea ebx,[ebp-20] ;=sizeof(dd)*5
|
mov ebx,ebp
|
||||||
|
sub ebx,20 ;=sizeof(dd)*5
|
||||||
mov edx,[ecx]
|
mov edx,[ecx]
|
||||||
mov [ebx+4],edx
|
mov [ebx+4],edx
|
||||||
mov edx,[ecx+4]
|
mov edx,[ecx+4]
|
||||||
@@ -127,7 +130,8 @@ endl
|
|||||||
mov eax,[i]
|
mov eax,[i]
|
||||||
mov dword[p+4],eax
|
mov dword[p+4],eax
|
||||||
|
|
||||||
lea eax,[ebp-8] ;=sizeof(dd)*2
|
mov eax,ebp
|
||||||
|
sub eax,8 ;=sizeof(dd)*2
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -135,9 +139,10 @@ endp
|
|||||||
align 4
|
align 4
|
||||||
proc glopDrawArrays, context:dword, param:dword
|
proc glopDrawArrays, context:dword, param:dword
|
||||||
locals
|
locals
|
||||||
|
vi dd ?
|
||||||
idx dd ?
|
idx dd ?
|
||||||
states dd ?
|
states dd ?
|
||||||
a_size dd ?
|
size dd ?
|
||||||
p rd 8 ;функция glopColor требует 8 параметров, другие функции требуют меньше, берем по максимуму что-бы не портить стек
|
p rd 8 ;функция glopColor требует 8 параметров, другие функции требуют меньше, берем по максимуму что-бы не портить стек
|
||||||
endl
|
endl
|
||||||
pushad
|
pushad
|
||||||
@@ -150,19 +155,132 @@ pushad
|
|||||||
mov [idx],eax ;param[2].i
|
mov [idx],eax ;param[2].i
|
||||||
mov eax,[ebx+4]
|
mov eax,[ebx+4]
|
||||||
mov [p+4],eax ;p[1].i = param[1].i
|
mov [p+4],eax ;p[1].i = param[1].i
|
||||||
lea eax,[ebp-32] ;=sizeof(dd)*8
|
mov eax,ebp
|
||||||
|
sub eax,32 ;=sizeof(dd)*8
|
||||||
stdcall glopBegin, edx,eax
|
stdcall glopBegin, edx,eax
|
||||||
|
|
||||||
cmp ecx,1
|
mov dword[vi],0
|
||||||
jl @f
|
|
||||||
align 4
|
align 4
|
||||||
.cycle_0: ;for (int vi=0; vi<count; vi++)
|
.cycle_0: ;for (int vi=0; vi<count; vi++)
|
||||||
call CopyArrayElementByIndex
|
cmp dword[vi],ecx
|
||||||
|
jge .cycle_0_end
|
||||||
|
bt dword[states],1 ;2^1=COLOR_ARRAY
|
||||||
|
jnc @f
|
||||||
|
mov esi,[edx+GLContext.color_array_size]
|
||||||
|
mov [size],esi
|
||||||
|
add esi,[edx+GLContext.color_array_stride]
|
||||||
|
imul esi,[idx] ;esi = i
|
||||||
|
shl esi,2
|
||||||
|
add esi,[edx+GLContext.color_array] ;esi = &context.color_array[i]
|
||||||
|
mov edi,ebp
|
||||||
|
sub edi,28 ;edi = &p[1]
|
||||||
|
mov ebx,[esi+8]
|
||||||
|
mov [edi],ebx ;p[1].f = context.color_array[i+2]
|
||||||
|
mov ebx,[esi+4]
|
||||||
|
mov [edi+4],ebx ;p[2].f = context.color_array[i+1]
|
||||||
|
mov ebx,[esi]
|
||||||
|
mov [edi+8],ebx ;p[3].f = context.color_array[i]
|
||||||
|
add edi,12
|
||||||
|
cmp dword[size],3
|
||||||
|
jle .e1
|
||||||
|
add esi,12
|
||||||
|
movsd
|
||||||
|
jmp .e2
|
||||||
|
.e1:
|
||||||
|
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
||||||
|
.e2:
|
||||||
|
mov edi,ebp
|
||||||
|
sub edi,32 ;edi = &p[0]
|
||||||
|
mov ebx,ebp
|
||||||
|
sub ebx,12 ;ebp-12 = &p[5]
|
||||||
|
push ebx
|
||||||
|
add ebx,4 ;ebp-8 = &p[6]
|
||||||
|
push ebx
|
||||||
|
add ebx,4 ;ebp-4 = &p[7]
|
||||||
|
push ebx
|
||||||
|
stdcall RGBFtoRGBI,[edi+12],[edi+8],[edi+4] ;call: r,g,b,&p[7],&p[6],&p[5]
|
||||||
|
stdcall glopColor, edx,edi ;(context, p(op,rf,gf,bf,af,ri,gi,bi))
|
||||||
|
@@:
|
||||||
|
bt dword[states],2 ;2^2=NORMAL_ARRAY
|
||||||
|
jnc @f
|
||||||
|
mov esi,[edx+GLContext.normal_array_stride]
|
||||||
|
add esi,3
|
||||||
|
imul esi,[idx]
|
||||||
|
shl esi,2
|
||||||
|
add esi,[edx+GLContext.normal_array] ;esi = &context.normal_array[ idx * (3 + context.normal_array_stride) ]
|
||||||
|
mov edi,edx
|
||||||
|
add edi,GLContext.current_normal
|
||||||
|
movsd ;context.current_normal.X = context.normal_array[i]
|
||||||
|
movsd
|
||||||
|
movsd
|
||||||
|
mov dword[edi],0.0 ;context.current_normal.W = 0.0f
|
||||||
|
@@:
|
||||||
|
bt dword[states],3 ;2^3=TEXCOORD_ARRAY
|
||||||
|
jnc @f
|
||||||
|
mov esi,[edx+GLContext.texcoord_array_size]
|
||||||
|
mov [size],esi
|
||||||
|
add esi,[edx+GLContext.texcoord_array_stride]
|
||||||
|
imul esi,[idx] ;esi = i
|
||||||
|
shl esi,2
|
||||||
|
add esi,[edx+GLContext.texcoord_array] ;esi = &context.texcoord_array[i]
|
||||||
|
mov edi,edx
|
||||||
|
add edi,GLContext.current_tex_coord
|
||||||
|
movsd ;context.current_tex_coord.X = ccontext.texcoord_array[i]
|
||||||
|
movsd
|
||||||
|
cmp dword[size],2
|
||||||
|
jle .e3
|
||||||
|
movsd
|
||||||
|
jmp .e4
|
||||||
|
.e3:
|
||||||
|
mov dword[edi],0.0 ;если задано 2 параметра, то 3-й ставим по умолчанию 0.0
|
||||||
|
add edi,4
|
||||||
|
.e4:
|
||||||
|
cmp dword[size],3
|
||||||
|
jle .e5
|
||||||
|
movsd
|
||||||
|
jmp @f
|
||||||
|
.e5:
|
||||||
|
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
||||||
|
@@:
|
||||||
|
bt dword[states],0 ;2^0=VERTEX_ARRAY
|
||||||
|
jnc @f
|
||||||
|
mov esi,[edx+GLContext.vertex_array_size]
|
||||||
|
mov [size],esi
|
||||||
|
add esi,[edx+GLContext.vertex_array_stride]
|
||||||
|
imul esi,[idx] ;esi = i
|
||||||
|
shl esi,2
|
||||||
|
add esi,[edx+GLContext.vertex_array] ;esi = &context.vertex_array[i]
|
||||||
|
mov edi,ebp
|
||||||
|
sub edi,28 ;edi = &p[1]
|
||||||
|
movsd ;p[1].f = context.vertex_array[i]
|
||||||
|
movsd
|
||||||
|
cmp dword[size],2
|
||||||
|
jle .e6
|
||||||
|
movsd
|
||||||
|
jmp .e7
|
||||||
|
.e6:
|
||||||
|
mov dword[edi],0.0 ;если задано 2 параметра, то 3-й ставим по умолчанию 0.0
|
||||||
|
add edi,4
|
||||||
|
jmp .e8 ;и 4-й тоже ставим по умолчанию
|
||||||
|
.e7:
|
||||||
|
cmp dword[size],3
|
||||||
|
jle .e8
|
||||||
|
movsd
|
||||||
|
sub edi,20 ;edi=&p[0]
|
||||||
|
jmp .e9
|
||||||
|
.e8:
|
||||||
|
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
||||||
|
sub edi,16 ;edi=&p[0]
|
||||||
|
.e9:
|
||||||
|
stdcall glopVertex, edx,edi
|
||||||
|
@@:
|
||||||
inc dword[idx]
|
inc dword[idx]
|
||||||
loop .cycle_0
|
inc dword[vi]
|
||||||
@@:
|
jmp .cycle_0
|
||||||
|
.cycle_0_end:
|
||||||
|
|
||||||
lea eax,[ebp-32] ;=sizeof(dd)*8
|
;mov eax,ebp
|
||||||
|
;sub eax,32 ;=sizeof(dd)*8
|
||||||
stdcall glopEnd, edx,eax
|
stdcall glopEnd, edx,eax
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
@@ -181,7 +299,8 @@ endl
|
|||||||
mov eax,[count]
|
mov eax,[count]
|
||||||
mov dword[p+12],eax
|
mov dword[p+12],eax
|
||||||
|
|
||||||
lea eax,[ebp-16] ;=sizeof(dd)*4
|
mov eax,ebp
|
||||||
|
sub eax,16 ;=sizeof(dd)*4
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -189,12 +308,12 @@ endp
|
|||||||
align 4
|
align 4
|
||||||
proc glopDrawElements, context:dword, param:dword
|
proc glopDrawElements, context:dword, param:dword
|
||||||
locals
|
locals
|
||||||
type dd ?
|
|
||||||
indices dd ? ;указатель на 16 или 32 битные индексы
|
|
||||||
ii dd ?
|
ii dd ?
|
||||||
idx dd ?
|
idx dd ?
|
||||||
states dd ?
|
states dd ?
|
||||||
a_size dd ?
|
type dd ?
|
||||||
|
size dd ?
|
||||||
|
indices dd ? ;указатель на 16 или 32 битные индексы
|
||||||
p rd 8
|
p rd 8
|
||||||
endl
|
endl
|
||||||
pushad
|
pushad
|
||||||
@@ -209,7 +328,8 @@ pushad
|
|||||||
mov [type],eax ;type = param[3].i
|
mov [type],eax ;type = param[3].i
|
||||||
mov eax,[ebx+16]
|
mov eax,[ebx+16]
|
||||||
mov [indices],eax ;*indices = param[4].p
|
mov [indices],eax ;*indices = param[4].p
|
||||||
lea eax,[ebp-32] ;=sizeof(dd)*8
|
mov eax,ebp
|
||||||
|
sub eax,32 ;=sizeof(dd)*8
|
||||||
stdcall glopBegin, edx,eax
|
stdcall glopBegin, edx,eax
|
||||||
|
|
||||||
mov dword[ii],0
|
mov dword[ii],0
|
||||||
@@ -231,133 +351,127 @@ align 4
|
|||||||
.end_0:
|
.end_0:
|
||||||
mov [idx],esi
|
mov [idx],esi
|
||||||
|
|
||||||
call CopyArrayElementByIndex
|
bt dword[states],1 ;2^1=COLOR_ARRAY
|
||||||
|
jnc @f
|
||||||
|
mov esi,[edx+GLContext.color_array_size]
|
||||||
|
mov [size],esi
|
||||||
|
add esi,[edx+GLContext.color_array_stride]
|
||||||
|
imul esi,[idx] ;esi = i
|
||||||
|
shl esi,2
|
||||||
|
add esi,[edx+GLContext.color_array] ;esi = &context.color_array[i]
|
||||||
|
mov edi,ebp
|
||||||
|
sub edi,28 ;edi = &p[1]
|
||||||
|
mov ebx,[esi+8]
|
||||||
|
mov [edi],ebx ;p[1].f = context.color_array[i+2]
|
||||||
|
mov ebx,[esi+4]
|
||||||
|
mov [edi+4],ebx ;p[2].f = context.color_array[i+1]
|
||||||
|
mov ebx,[esi]
|
||||||
|
mov [edi+8],ebx ;p[3].f = context.color_array[i]
|
||||||
|
add edi,12
|
||||||
|
cmp dword[size],3
|
||||||
|
jle .e1
|
||||||
|
add esi,12
|
||||||
|
movsd
|
||||||
|
jmp .e2
|
||||||
|
.e1:
|
||||||
|
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
||||||
|
.e2:
|
||||||
|
mov edi,ebp
|
||||||
|
sub edi,32 ;edi = &p[0]
|
||||||
|
mov ebx,ebp
|
||||||
|
sub ebx,12 ;ebp-12 = &p[5]
|
||||||
|
push ebx
|
||||||
|
add ebx,4 ;ebp-8 = &p[6]
|
||||||
|
push ebx
|
||||||
|
add ebx,4 ;ebp-4 = &p[7]
|
||||||
|
push ebx
|
||||||
|
stdcall RGBFtoRGBI,[edi+12],[edi+8],[edi+4] ;call: r,g,b,&p[7],&p[6],&p[5]
|
||||||
|
stdcall glopColor, edx,edi ;(context, p(op,rf,gf,bf,af,ri,gi,bi))
|
||||||
|
@@:
|
||||||
|
bt dword[states],2 ;2^2=NORMAL_ARRAY
|
||||||
|
jnc @f
|
||||||
|
mov esi,[edx+GLContext.normal_array_stride]
|
||||||
|
add esi,3
|
||||||
|
imul esi,[idx] ;esi = idx * (3 + context.normal_array_stride)
|
||||||
|
shl esi,2
|
||||||
|
add esi,[edx+GLContext.normal_array]
|
||||||
|
mov edi,edx
|
||||||
|
add edi,GLContext.current_normal
|
||||||
|
movsd ;context.current_normal.X = context.normal_array[i]
|
||||||
|
movsd
|
||||||
|
movsd
|
||||||
|
mov dword[edi],0.0 ;context.current_normal.W = 0.0f
|
||||||
|
@@:
|
||||||
|
bt dword[states],3 ;2^3=TEXCOORD_ARRAY
|
||||||
|
jnc @f
|
||||||
|
mov esi,[edx+GLContext.texcoord_array_size]
|
||||||
|
mov [size],esi
|
||||||
|
add esi,[edx+GLContext.texcoord_array_stride]
|
||||||
|
imul esi,[idx] ;esi = i
|
||||||
|
shl esi,2
|
||||||
|
add esi,[edx+GLContext.texcoord_array] ;esi = &context.texcoord_array[i]
|
||||||
|
mov edi,edx
|
||||||
|
add edi,GLContext.current_tex_coord
|
||||||
|
movsd ;context.current_tex_coord.X = ccontext.texcoord_array[i]
|
||||||
|
movsd
|
||||||
|
cmp dword[size],2
|
||||||
|
jle .e3
|
||||||
|
movsd
|
||||||
|
jmp .e4
|
||||||
|
.e3:
|
||||||
|
mov dword[edi],0.0 ;если задано 2 параметра, то 3-й ставим по умолчанию 0.0
|
||||||
|
add edi,4
|
||||||
|
.e4:
|
||||||
|
cmp dword[size],3
|
||||||
|
jle .e5
|
||||||
|
movsd
|
||||||
|
jmp @f
|
||||||
|
.e5:
|
||||||
|
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
||||||
|
@@:
|
||||||
|
bt dword[states],0 ;2^0=VERTEX_ARRAY
|
||||||
|
jnc @f
|
||||||
|
mov esi,[edx+GLContext.vertex_array_size]
|
||||||
|
mov [size],esi
|
||||||
|
add esi,[edx+GLContext.vertex_array_stride]
|
||||||
|
imul esi,[idx] ;esi = i
|
||||||
|
shl esi,2
|
||||||
|
add esi,[edx+GLContext.vertex_array] ;esi = &context.vertex_array[i]
|
||||||
|
mov edi,ebp
|
||||||
|
sub edi,28 ;edi = &p[1]
|
||||||
|
movsd ;p[1].f = context.vertex_array[i]
|
||||||
|
movsd
|
||||||
|
cmp dword[size],2
|
||||||
|
jle .e6
|
||||||
|
movsd
|
||||||
|
jmp .e7
|
||||||
|
.e6:
|
||||||
|
mov dword[edi],0.0 ;если задано 2 параметра, то 3-й ставим по умолчанию 0.0
|
||||||
|
add edi,4
|
||||||
|
jmp .e8 ;и 4-й тоже ставим по умолчанию
|
||||||
|
.e7:
|
||||||
|
cmp dword[size],3
|
||||||
|
jle .e8
|
||||||
|
movsd
|
||||||
|
sub edi,20 ;edi=&p[0]
|
||||||
|
jmp .e9
|
||||||
|
.e8:
|
||||||
|
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
||||||
|
sub edi,16 ;edi=&p[0]
|
||||||
|
.e9:
|
||||||
|
stdcall glopVertex, edx,edi
|
||||||
|
@@:
|
||||||
inc dword[ii]
|
inc dword[ii]
|
||||||
jmp .cycle_0
|
jmp .cycle_0
|
||||||
.cycle_0_end:
|
.cycle_0_end:
|
||||||
|
|
||||||
lea eax,[ebp-32] ;=sizeof(dd)*8
|
mov eax,ebp
|
||||||
|
sub eax,32 ;=sizeof(dd)*8
|
||||||
stdcall glopEnd, edx,eax
|
stdcall glopEnd, edx,eax
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
;input:
|
|
||||||
; edx - GLContext
|
|
||||||
idx equ ebp-44
|
|
||||||
states equ ebp-40
|
|
||||||
a_size equ ebp-36
|
|
||||||
align 4
|
|
||||||
CopyArrayElementByIndex:
|
|
||||||
bt dword[states],1 ;2^1=COLOR_ARRAY
|
|
||||||
jnc @f
|
|
||||||
mov esi,[edx+GLContext.color_array_size]
|
|
||||||
mov [a_size],esi
|
|
||||||
add esi,[edx+GLContext.color_array_stride]
|
|
||||||
imul esi,[idx] ;esi = i
|
|
||||||
shl esi,2
|
|
||||||
add esi,[edx+GLContext.color_array] ;esi = &context.color_array[i]
|
|
||||||
lea edi,[ebp-28] ;edi = &p[1]
|
|
||||||
mov ebx,[esi+8]
|
|
||||||
mov [edi],ebx ;p[1].f = context.color_array[i+2]
|
|
||||||
mov ebx,[esi+4]
|
|
||||||
mov [edi+4],ebx ;p[2].f = context.color_array[i+1]
|
|
||||||
mov ebx,[esi]
|
|
||||||
mov [edi+8],ebx ;p[3].f = context.color_array[i]
|
|
||||||
add edi,12
|
|
||||||
cmp dword[a_size],3
|
|
||||||
jle .e1
|
|
||||||
add esi,12
|
|
||||||
movsd
|
|
||||||
jmp .e2
|
|
||||||
.e1:
|
|
||||||
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
|
||||||
.e2:
|
|
||||||
lea edi,[ebp-32] ;edi = &p[0]
|
|
||||||
lea ebx,[ebp-12] ;ebp-12 = &p[5]
|
|
||||||
push ebx
|
|
||||||
add ebx,4 ;ebp-8 = &p[6]
|
|
||||||
push ebx
|
|
||||||
add ebx,4 ;ebp-4 = &p[7]
|
|
||||||
push ebx
|
|
||||||
stdcall RGBFtoRGBI,[edi+12],[edi+8],[edi+4] ;call: r,g,b,&p[7],&p[6],&p[5]
|
|
||||||
stdcall glopColor, edx,edi ;(context, p(op,rf,gf,bf,af,ri,gi,bi))
|
|
||||||
@@:
|
|
||||||
bt dword[states],2 ;2^2=NORMAL_ARRAY
|
|
||||||
jnc @f
|
|
||||||
mov esi,[edx+GLContext.normal_array_stride]
|
|
||||||
add esi,3
|
|
||||||
imul esi,[idx] ;esi = idx * (3 + context.normal_array_stride)
|
|
||||||
shl esi,2
|
|
||||||
add esi,[edx+GLContext.normal_array] ;esi = &context.normal_array[ idx * (3 + context.normal_array_stride) ]
|
|
||||||
lea edi,[edx+GLContext.current_normal]
|
|
||||||
movsd ;context.current_normal.X = context.normal_array[i]
|
|
||||||
movsd
|
|
||||||
movsd
|
|
||||||
mov dword[edi],0.0 ;context.current_normal.W = 0.0f
|
|
||||||
@@:
|
|
||||||
bt dword[states],3 ;2^3=TEXCOORD_ARRAY
|
|
||||||
jnc @f
|
|
||||||
mov esi,[edx+GLContext.texcoord_array_size]
|
|
||||||
mov [a_size],esi
|
|
||||||
add esi,[edx+GLContext.texcoord_array_stride]
|
|
||||||
imul esi,[idx] ;esi = i
|
|
||||||
shl esi,2
|
|
||||||
add esi,[edx+GLContext.texcoord_array] ;esi = &context.texcoord_array[i]
|
|
||||||
lea edi,[edx+GLContext.current_tex_coord]
|
|
||||||
movsd ;context.current_tex_coord.X = ccontext.texcoord_array[i]
|
|
||||||
movsd
|
|
||||||
cmp dword[a_size],2
|
|
||||||
jle .e3
|
|
||||||
movsd
|
|
||||||
jmp .e4
|
|
||||||
.e3:
|
|
||||||
mov dword[edi],0.0 ;если задано 2 параметра, то 3-й ставим по умолчанию 0.0
|
|
||||||
add edi,4
|
|
||||||
.e4:
|
|
||||||
cmp dword[a_size],3
|
|
||||||
jle .e5
|
|
||||||
movsd
|
|
||||||
jmp @f
|
|
||||||
.e5:
|
|
||||||
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
|
||||||
@@:
|
|
||||||
bt dword[states],0 ;2^0=VERTEX_ARRAY
|
|
||||||
jnc @f
|
|
||||||
mov esi,[edx+GLContext.vertex_array_size]
|
|
||||||
mov [a_size],esi
|
|
||||||
add esi,[edx+GLContext.vertex_array_stride]
|
|
||||||
imul esi,[idx] ;esi = i
|
|
||||||
shl esi,2
|
|
||||||
add esi,[edx+GLContext.vertex_array] ;esi = &context.vertex_array[i]
|
|
||||||
lea edi,[ebp-28] ;edi = &p[1]
|
|
||||||
movsd ;p[1].f = context.vertex_array[i]
|
|
||||||
movsd
|
|
||||||
cmp dword[a_size],2
|
|
||||||
jle .e6
|
|
||||||
movsd
|
|
||||||
jmp .e7
|
|
||||||
.e6:
|
|
||||||
mov dword[edi],0.0 ;если задано 2 параметра, то 3-й ставим по умолчанию 0.0
|
|
||||||
add edi,4
|
|
||||||
jmp .e8 ;и 4-й тоже ставим по умолчанию
|
|
||||||
.e7:
|
|
||||||
cmp dword[a_size],3
|
|
||||||
jle .e8
|
|
||||||
movsd
|
|
||||||
sub edi,20 ;edi=&p[0]
|
|
||||||
jmp .e9
|
|
||||||
.e8:
|
|
||||||
mov dword[edi],1.0 ;если задано 3 параметра, то 4-й ставим по умолчанию 1.0
|
|
||||||
sub edi,16 ;edi=&p[0]
|
|
||||||
.e9:
|
|
||||||
stdcall glopVertex, edx,edi
|
|
||||||
@@:
|
|
||||||
ret
|
|
||||||
purge idx
|
|
||||||
purge states
|
|
||||||
purge a_size
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
proc glDrawElements uses eax, mode:dword, count:dword, type:dword, indices:dword
|
proc glDrawElements uses eax, mode:dword, count:dword, type:dword, indices:dword
|
||||||
locals
|
locals
|
||||||
@@ -374,7 +488,8 @@ endl
|
|||||||
mov eax,[indices]
|
mov eax,[indices]
|
||||||
mov dword[p+16],eax
|
mov dword[p+16],eax
|
||||||
|
|
||||||
lea eax,[ebp-20] ;=sizeof(dd)*5
|
mov eax,ebp
|
||||||
|
sub eax,20 ;=sizeof(dd)*5
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -418,7 +533,8 @@ endl
|
|||||||
;assert(0);
|
;assert(0);
|
||||||
.end_f:
|
.end_f:
|
||||||
|
|
||||||
lea eax,[ebp-8] ;=sizeof(dd)*2
|
mov eax,ebp
|
||||||
|
sub eax,8 ;=sizeof(dd)*2
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -462,7 +578,8 @@ endl
|
|||||||
;assert(0);
|
;assert(0);
|
||||||
.end_f:
|
.end_f:
|
||||||
|
|
||||||
lea eax,[ebp-8] ;=sizeof(dd)*2
|
mov eax,ebp
|
||||||
|
sub eax,8 ;=sizeof(dd)*2
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -495,7 +612,8 @@ endl
|
|||||||
mov eax,[pointer]
|
mov eax,[pointer]
|
||||||
mov dword[p+12],eax
|
mov dword[p+12],eax
|
||||||
|
|
||||||
lea eax,[ebp-16] ;=sizeof(dd)*4
|
mov eax,ebp
|
||||||
|
sub eax,16 ;=sizeof(dd)*4
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -528,7 +646,8 @@ endl
|
|||||||
mov eax,[pointer]
|
mov eax,[pointer]
|
||||||
mov dword[p+12],eax
|
mov dword[p+12],eax
|
||||||
|
|
||||||
lea eax,[ebp-16] ;=sizeof(dd)*4
|
mov eax,ebp
|
||||||
|
sub eax,16 ;=sizeof(dd)*4
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -557,7 +676,8 @@ endl
|
|||||||
mov eax,[pointer]
|
mov eax,[pointer]
|
||||||
mov dword[p+8],eax
|
mov dword[p+8],eax
|
||||||
|
|
||||||
lea eax,[ebp-12] ;=sizeof(dd)*3
|
mov eax,ebp
|
||||||
|
sub eax,12 ;=sizeof(dd)*3
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -590,7 +710,8 @@ endl
|
|||||||
mov eax,[pointer]
|
mov eax,[pointer]
|
||||||
mov dword[p+12],eax
|
mov dword[p+12],eax
|
||||||
|
|
||||||
lea eax,[ebp-16] ;=sizeof(dd)*4
|
mov eax,ebp
|
||||||
|
sub eax,16 ;=sizeof(dd)*4
|
||||||
stdcall gl_add_op,eax
|
stdcall gl_add_op,eax
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
@@ -12,15 +12,6 @@ include '../opengl_const.inc'
|
|||||||
|
|
||||||
@use_library
|
@use_library
|
||||||
|
|
||||||
;Константы описывающие файл house.3ds (получены с использованием программы info_3ds)
|
|
||||||
VERTICES_OFFSET = 0x33 ;смещение по которому идут координаты вершин
|
|
||||||
FACES_COUNT = 0x162 ;число граней
|
|
||||||
FACES_OFFSET = 0x96b ;смещение по которому идет информация о гранях
|
|
||||||
|
|
||||||
HOUSE_FILE_SIZE = 5297
|
|
||||||
txt_error_file_size db '"House.3ds file size does not match" -tE',0
|
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
start:
|
start:
|
||||||
load_library name_tgl, library_path, system_path, import_tinygl
|
load_library name_tgl, library_path, system_path, import_tinygl
|
||||||
@@ -31,9 +22,9 @@ start:
|
|||||||
|
|
||||||
;заполняем массив индексов из файла house.3ds (который вшит внутрь данной программы)
|
;заполняем массив индексов из файла house.3ds (который вшит внутрь данной программы)
|
||||||
mov esi,house_3ds
|
mov esi,house_3ds
|
||||||
add esi,FACES_OFFSET
|
add esi,0x1798 ;смещение по которому идет информация о гранях в файле 3ds (получено с использованием программы info_3ds)
|
||||||
mov edi,Indices
|
mov edi,Indices
|
||||||
mov eax,FACES_COUNT
|
mov eax,0x1a6 ;число граней в файле 3ds (получено с использованием программы info_3ds)
|
||||||
@@:
|
@@:
|
||||||
movsd
|
movsd
|
||||||
movsw
|
movsw
|
||||||
@@ -57,13 +48,13 @@ red_win:
|
|||||||
align 4
|
align 4
|
||||||
still:
|
still:
|
||||||
mcall SF_WAIT_EVENT
|
mcall SF_WAIT_EVENT
|
||||||
cmp al,EV_REDRAW
|
cmp al,1
|
||||||
jz red_win
|
jz red_win
|
||||||
cmp al,EV_KEY
|
cmp al,2
|
||||||
jz key
|
jz key
|
||||||
cmp al,EV_BUTTON
|
cmp al,3
|
||||||
jz button
|
jz button
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_window:
|
draw_window:
|
||||||
@@ -150,15 +141,10 @@ caption db 'Test opengl 1.1 arrays, [Esc] - exit, [<-],[->],[Up],[Down] - rotate
|
|||||||
align 4
|
align 4
|
||||||
draw_3d:
|
draw_3d:
|
||||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
||||||
mov eax,house_3ds.end-house_3ds
|
|
||||||
cmp eax,HOUSE_FILE_SIZE
|
|
||||||
je @f
|
|
||||||
notify_window_run txt_error_file_size
|
|
||||||
ret
|
|
||||||
@@:
|
|
||||||
call [glPushMatrix]
|
call [glPushMatrix]
|
||||||
|
|
||||||
;масштаб и повороты
|
;масштаб и повороты
|
||||||
|
stdcall [glTranslatef], 0.0,0.0,0.5
|
||||||
stdcall [glScalef], [scale], [scale], [scale]
|
stdcall [glScalef], [scale], [scale], [scale]
|
||||||
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
||||||
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
||||||
@@ -166,17 +152,17 @@ call [glPushMatrix]
|
|||||||
|
|
||||||
;рисование через индексный массив
|
;рисование через индексный массив
|
||||||
mov eax,house_3ds ;начало внедренного файла 3ds
|
mov eax,house_3ds ;начало внедренного файла 3ds
|
||||||
add eax,VERTICES_OFFSET
|
add eax,0xeb ;смещение по которому идут координаты вершин (получено с использованием программы info_3ds)
|
||||||
stdcall [glVertexPointer], 3, GL_FLOAT, 0, eax ;задаем массив для вершин, 3 - число координат для одной вершины
|
stdcall [glVertexPointer], 3, GL_FLOAT, 0, eax ;задаем массив для вершин, 3 - число координат для одной вершины
|
||||||
stdcall [glEnableClientState], GL_VERTEX_ARRAY ;включаем режим рисования вершин
|
stdcall [glEnableClientState], GL_VERTEX_ARRAY ;включаем режим рисования вершин
|
||||||
stdcall [glDrawElements], GL_TRIANGLES, FACES_COUNT*3, GL_UNSIGNED_SHORT, Indices ;mode, count, type, *indices
|
stdcall [glDrawElements], GL_TRIANGLES, 0x1a6*3, GL_UNSIGNED_SHORT, Indices ;mode, count, type, *indices
|
||||||
stdcall [glDisableClientState], GL_VERTEX_ARRAY ;отключаем режим рисования вершин
|
stdcall [glDisableClientState], GL_VERTEX_ARRAY ;отключаем режим рисования вершин
|
||||||
|
|
||||||
call [glPopMatrix]
|
call [glPopMatrix]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
scale dd 0.07 ;начальный масштаб (в идеальном случае должен вычислятся, но для даного примера подобран в ручную на глаз)
|
scale dd 0.0065 ;начальный масштаб (в идеальном случае должен вычислятся, но для даного примера подобран в ручную на глаз)
|
||||||
delt_sc dd 0.0005
|
delt_sc dd 0.0005
|
||||||
angle_z dd 90.0
|
angle_z dd 90.0
|
||||||
angle_y dd 90.0
|
angle_y dd 90.0
|
||||||
@@ -186,9 +172,8 @@ delt_size dd 3.0
|
|||||||
align 4
|
align 4
|
||||||
house_3ds: ;внедряем файл внутрь программы (в идеальном случае должен открыватся через окно диалога, но для облегчения примера вшит внутрь)
|
house_3ds: ;внедряем файл внутрь программы (в идеальном случае должен открыватся через окно диалога, но для облегчения примера вшит внутрь)
|
||||||
file '../../../../../demos/view3ds/3ds_objects/House.3ds'
|
file '../../../../../demos/view3ds/3ds_objects/House.3ds'
|
||||||
.end:
|
|
||||||
align 4
|
align 4
|
||||||
Indices rb FACES_COUNT*6 ;на каждую грань по 3 точки, индекс точки 2 байта
|
Indices rb 0x1a6*6 ;0x1a6 - число граней, на каждую грань по 3 точки, индекс точки 2 байта
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
@@ -36,13 +36,13 @@ red_win:
|
|||||||
align 16
|
align 16
|
||||||
still:
|
still:
|
||||||
mcall SF_WAIT_EVENT
|
mcall SF_WAIT_EVENT
|
||||||
cmp al,EV_REDRAW
|
cmp al,1
|
||||||
jz red_win
|
jz red_win
|
||||||
cmp al,EV_KEY
|
cmp al,2
|
||||||
jz key
|
jz key
|
||||||
cmp al,EV_BUTTON
|
cmp al,3
|
||||||
jz button
|
jz button
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_window:
|
draw_window:
|
||||||
@@ -141,6 +141,7 @@ stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим б
|
|||||||
stdcall [glColor3f], 1.0, 1.0, 0.0
|
stdcall [glColor3f], 1.0, 1.0, 0.0
|
||||||
|
|
||||||
call [glPushMatrix]
|
call [glPushMatrix]
|
||||||
|
stdcall [glTranslatef], 0.0,0.0,0.5
|
||||||
stdcall [glScalef], [scale], [scale], [scale]
|
stdcall [glScalef], [scale], [scale], [scale]
|
||||||
|
|
||||||
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
||||||
|
@@ -60,7 +60,6 @@ load_libraries l_libs_start,l_libs_end
|
|||||||
stdcall [buf2d_convert_text_matrix], buf_1
|
stdcall [buf2d_convert_text_matrix], buf_1
|
||||||
|
|
||||||
load_image_file 'toolb_1.png', image_data_toolbar
|
load_image_file 'toolb_1.png', image_data_toolbar
|
||||||
call SetLight
|
|
||||||
call draw_3d
|
call draw_3d
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@@ -70,13 +69,13 @@ red_win:
|
|||||||
align 4
|
align 4
|
||||||
still:
|
still:
|
||||||
mcall SF_WAIT_EVENT
|
mcall SF_WAIT_EVENT
|
||||||
cmp al,EV_REDRAW
|
cmp al,1
|
||||||
jz red_win
|
jz red_win
|
||||||
cmp al,EV_KEY
|
cmp al,2
|
||||||
jz key
|
jz key
|
||||||
cmp al,EV_BUTTON
|
cmp al,3
|
||||||
jz button
|
jz button
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_window:
|
draw_window:
|
||||||
@@ -304,7 +303,11 @@ draw_3d:
|
|||||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
||||||
|
|
||||||
call [glPushMatrix]
|
call [glPushMatrix]
|
||||||
|
call SetLight
|
||||||
|
|
||||||
|
stdcall [glTranslatef], 0.0,0.0,0.5
|
||||||
stdcall [glScalef], [scale], [scale], [scale]
|
stdcall [glScalef], [scale], [scale], [scale]
|
||||||
|
stdcall [glScalef], 1.0, 1.0, 0.5
|
||||||
|
|
||||||
stdcall [glColor3f], 1.0, 1.0, 0.0
|
stdcall [glColor3f], 1.0, 1.0, 0.0
|
||||||
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
||||||
|
@@ -60,7 +60,6 @@ load_libraries l_libs_start,l_libs_end
|
|||||||
stdcall [buf2d_convert_text_matrix], buf_1
|
stdcall [buf2d_convert_text_matrix], buf_1
|
||||||
|
|
||||||
load_image_file 'toolb_1.png', image_data_toolbar
|
load_image_file 'toolb_1.png', image_data_toolbar
|
||||||
call SetLight
|
|
||||||
call draw_3d
|
call draw_3d
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@@ -70,13 +69,13 @@ red_win:
|
|||||||
align 4
|
align 4
|
||||||
still:
|
still:
|
||||||
mcall SF_WAIT_EVENT
|
mcall SF_WAIT_EVENT
|
||||||
cmp al,EV_REDRAW
|
cmp al,1
|
||||||
jz red_win
|
jz red_win
|
||||||
cmp al,EV_KEY
|
cmp al,2
|
||||||
jz key
|
jz key
|
||||||
cmp al,EV_BUTTON
|
cmp al,3
|
||||||
jz button
|
jz button
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_window:
|
draw_window:
|
||||||
@@ -297,6 +296,9 @@ draw_3d:
|
|||||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
||||||
|
|
||||||
call [glPushMatrix]
|
call [glPushMatrix]
|
||||||
|
call SetLight
|
||||||
|
|
||||||
|
stdcall [glTranslatef], 0.0,0.0,0.5
|
||||||
stdcall [glScalef], [scale], [scale], [scale]
|
stdcall [glScalef], [scale], [scale], [scale]
|
||||||
|
|
||||||
stdcall [glColor3f], 1.0, 1.0, 0.0
|
stdcall [glColor3f], 1.0, 1.0, 0.0
|
||||||
|
@@ -88,13 +88,13 @@ red_win:
|
|||||||
align 4
|
align 4
|
||||||
still:
|
still:
|
||||||
mcall SF_WAIT_EVENT
|
mcall SF_WAIT_EVENT
|
||||||
cmp al,EV_REDRAW
|
cmp al,1
|
||||||
jz red_win
|
jz red_win
|
||||||
cmp al,EV_KEY
|
cmp al,2
|
||||||
jz key
|
jz key
|
||||||
cmp al,EV_BUTTON
|
cmp al,3
|
||||||
jz button
|
jz button
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_window:
|
draw_window:
|
||||||
@@ -295,6 +295,7 @@ draw_3d:
|
|||||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
||||||
|
|
||||||
call [glPushMatrix]
|
call [glPushMatrix]
|
||||||
|
stdcall [glTranslatef], 0.0,0.0,0.5
|
||||||
stdcall [glScalef], [scale], [scale], [scale]
|
stdcall [glScalef], [scale], [scale], [scale]
|
||||||
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
||||||
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
||||||
|
@@ -88,13 +88,13 @@ red_win:
|
|||||||
align 4
|
align 4
|
||||||
still:
|
still:
|
||||||
mcall SF_WAIT_EVENT
|
mcall SF_WAIT_EVENT
|
||||||
cmp al,EV_REDRAW
|
cmp al,1
|
||||||
jz red_win
|
jz red_win
|
||||||
cmp al,EV_KEY
|
cmp al,2
|
||||||
jz key
|
jz key
|
||||||
cmp al,EV_BUTTON
|
cmp al,3
|
||||||
jz button
|
jz button
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_window:
|
draw_window:
|
||||||
@@ -297,8 +297,9 @@ draw_3d:
|
|||||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
||||||
|
|
||||||
call [glPushMatrix]
|
call [glPushMatrix]
|
||||||
|
stdcall [glTranslatef], 0.0,0.0,0.5
|
||||||
stdcall [glScalef], [scale], [scale], [scale]
|
stdcall [glScalef], [scale], [scale], [scale]
|
||||||
stdcall [glScalef], 1.0, 1.0, 0.2 ;прижимаем сферу, что-бы сразу не вылазила при увеличении
|
stdcall [glScalef], 1.0, 1.0, 0.1 ;прижимаем сферу, что-бы сразу не вылазила при увеличении
|
||||||
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
||||||
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
||||||
|
|
||||||
|
@@ -89,13 +89,13 @@ red_win:
|
|||||||
align 4
|
align 4
|
||||||
still:
|
still:
|
||||||
mcall SF_WAIT_EVENT
|
mcall SF_WAIT_EVENT
|
||||||
cmp al,EV_REDRAW
|
cmp al,1
|
||||||
jz red_win
|
jz red_win
|
||||||
cmp al,EV_KEY
|
cmp al,2
|
||||||
jz key
|
jz key
|
||||||
cmp al,EV_BUTTON
|
cmp al,3
|
||||||
jz button
|
jz button
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
draw_window:
|
draw_window:
|
||||||
@@ -268,9 +268,8 @@ draw_3d:
|
|||||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
|
||||||
|
|
||||||
call [glPushMatrix]
|
call [glPushMatrix]
|
||||||
stdcall [glTranslatef], 0.0,0.0,-1.0 ;двигаем сферу на себя, что-бы отсечь переднюю часть
|
|
||||||
stdcall [glScalef], [scale], [scale], [scale]
|
stdcall [glScalef], [scale], [scale], [scale]
|
||||||
stdcall [glScalef], 1.0, 1.0, 0.2 ;прижимаем сферу, что-бы сразу не вылазила при увеличении
|
stdcall [glScalef], 1.0, 1.0, 0.1 ;прижимаем сферу, что-бы сразу не вылазила при увеличении
|
||||||
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
||||||
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
||||||
|
|
||||||
|
@@ -185,7 +185,7 @@ align 4
|
|||||||
cmp ecx,GL_SPOT_EXPONENT
|
cmp ecx,GL_SPOT_EXPONENT
|
||||||
jne @f
|
jne @f
|
||||||
mov ecx,[ebx+12]
|
mov ecx,[ebx+12]
|
||||||
mov [edx+GLLight.spot_exponent],ecx ;l.spot_exponent=p[3]
|
mov [edi+GLLight.spot_exponent],ecx ;l.spot_exponent=p[3]
|
||||||
jmp .end_f
|
jmp .end_f
|
||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
@@ -193,7 +193,7 @@ align 4
|
|||||||
jne .end_spot_c
|
jne .end_spot_c
|
||||||
fld dword[ebp+12] ;float a=v.v[0]
|
fld dword[ebp+12] ;float a=v.v[0]
|
||||||
; assert(a == 180 || (a>=0 && a<=90));
|
; assert(a == 180 || (a>=0 && a<=90));
|
||||||
fst dword[edx+GLLight.spot_cutoff] ;l.spot_cutoff=a
|
fst dword[edi+GLLight.spot_cutoff] ;l.spot_cutoff=a
|
||||||
fcom dword[an180f] ;if (a != 180)
|
fcom dword[an180f] ;if (a != 180)
|
||||||
fstsw ax
|
fstsw ax
|
||||||
sahf
|
sahf
|
||||||
@@ -202,7 +202,7 @@ align 4
|
|||||||
fmulp
|
fmulp
|
||||||
fdiv dword[an180f]
|
fdiv dword[an180f]
|
||||||
fcos
|
fcos
|
||||||
fstp dword[edx+GLLight.cos_spot_cutoff] ;l.cos_spot_cutoff=cos(a * M_PI / 180.0)
|
fstp dword[edi+GLLight.cos_spot_cutoff] ;l.cos_spot_cutoff=cos(a * M_PI / 180.0)
|
||||||
jmp .end_f
|
jmp .end_f
|
||||||
@@:
|
@@:
|
||||||
ffree st0
|
ffree st0
|
||||||
@@ -213,21 +213,21 @@ align 4
|
|||||||
cmp ecx,GL_CONSTANT_ATTENUATION
|
cmp ecx,GL_CONSTANT_ATTENUATION
|
||||||
jne @f
|
jne @f
|
||||||
mov ecx,[ebx+12]
|
mov ecx,[ebx+12]
|
||||||
mov [edx+GLLight.attenuation],ecx ;l->attenuation[0]=p[3]
|
mov [edi+GLLight.attenuation],ecx ;l->attenuation[0]=p[3]
|
||||||
jmp .end_f
|
jmp .end_f
|
||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
cmp ecx,GL_LINEAR_ATTENUATION
|
cmp ecx,GL_LINEAR_ATTENUATION
|
||||||
jne @f
|
jne @f
|
||||||
mov ecx,[ebx+12]
|
mov ecx,[ebx+12]
|
||||||
mov [edx+GLLight.attenuation+4],ecx ;l->attenuation[1]=p[3]
|
mov [edi+GLLight.attenuation+4],ecx ;l->attenuation[1]=p[3]
|
||||||
jmp .end_f
|
jmp .end_f
|
||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
cmp ecx,GL_QUADRATIC_ATTENUATION
|
cmp ecx,GL_QUADRATIC_ATTENUATION
|
||||||
jne @f
|
jne @f
|
||||||
mov ecx,[ebx+12]
|
mov ecx,[ebx+12]
|
||||||
mov [edx+GLLight.attenuation+8],ecx ;l->attenuation[2]=p[3]
|
mov [edi+GLLight.attenuation+8],ecx ;l->attenuation[2]=p[3]
|
||||||
jmp .end_f
|
jmp .end_f
|
||||||
align 4
|
align 4
|
||||||
@@: ;default:
|
@@: ;default:
|
||||||
@@ -363,14 +363,15 @@ fl_1e_3 dd 1.0e-3
|
|||||||
align 16
|
align 16
|
||||||
proc gl_shade_vertex, context:dword, v:dword
|
proc gl_shade_vertex, context:dword, v:dword
|
||||||
locals
|
locals
|
||||||
R dd ? ;float ebp-92
|
R dd ? ;float ebp-96
|
||||||
G dd ? ;float ebp-88
|
G dd ? ;float ebp-92
|
||||||
B dd ? ;float ebp-84
|
B dd ? ;float ebp-88
|
||||||
A dd ? ;float ebp-80
|
A dd ? ;float ebp-84
|
||||||
s V3 ;ebp-76
|
s V3 ;ebp-80
|
||||||
d V3 ;ebp-64
|
d V3 ;ebp-68
|
||||||
tmp dd ? ;float ebp-52
|
tmp dd ? ;float ebp-56
|
||||||
att dd ? ;float ebp-48
|
att dd ? ;float ebp-52
|
||||||
|
dot_spot dd ? ;float ebp-48
|
||||||
lR dd ? ;float ebp-44
|
lR dd ? ;float ebp-44
|
||||||
lB dd ? ;float ebp-40
|
lB dd ? ;float ebp-40
|
||||||
lG dd ? ;float ebp-36
|
lG dd ? ;float ebp-36
|
||||||
@@ -562,6 +563,7 @@ align 4
|
|||||||
fmul dword[d+offs_Z]
|
fmul dword[d+offs_Z]
|
||||||
faddp
|
faddp
|
||||||
fchs
|
fchs
|
||||||
|
fst dword[dot_spot]
|
||||||
cmp dword[twoside],0 ;if (twoside && dot_spot < 0)
|
cmp dword[twoside],0 ;if (twoside && dot_spot < 0)
|
||||||
je @f
|
je @f
|
||||||
ftst ;if (dot_spot<0)
|
ftst ;if (dot_spot<0)
|
||||||
|
@@ -197,24 +197,21 @@ push edi esi
|
|||||||
add ebx,4
|
add ebx,4
|
||||||
inc esi
|
inc esi
|
||||||
|
|
||||||
cmp byte[esi],'f' ;float
|
cmp byte[esi],'f'
|
||||||
jne @f
|
jne @f
|
||||||
fld dword[ebx]
|
fld dword[ebx]
|
||||||
fstp qword[Data_Double]
|
fstp qword[Data_Double]
|
||||||
call DoubleFloat_to_String
|
call DoubleFloat_to_String
|
||||||
stdcall str_cat, edi,Data_String
|
stdcall str_cat, edi,Data_String
|
||||||
@@:
|
@@:
|
||||||
cmp byte[esi],'C' ;const
|
cmp byte[esi],'d'
|
||||||
je @f
|
jne @f
|
||||||
cmp byte[esi],'d' ;integer
|
|
||||||
je @f
|
|
||||||
jmp .no_param
|
|
||||||
@@:
|
|
||||||
stdcall str_len,edi
|
stdcall str_len,edi
|
||||||
add edi,eax
|
add edi,eax
|
||||||
sub ecx,eax
|
sub ecx,eax
|
||||||
mov eax,dword[ebx]
|
mov eax,dword[ebx]
|
||||||
stdcall convert_int_to_str,ecx
|
stdcall convert_int_to_str,ecx
|
||||||
|
@@:
|
||||||
.no_param:
|
.no_param:
|
||||||
inc esi
|
inc esi
|
||||||
cmp byte[esi],0
|
cmp byte[esi],0
|
||||||
|
@@ -134,7 +134,7 @@ endl
|
|||||||
|
|
||||||
cmp dword[edx+GLContext.lighting_enabled],0 ;if(context.lighting_enabled)
|
cmp dword[edx+GLContext.lighting_enabled],0 ;if(context.lighting_enabled)
|
||||||
jne .if_0
|
jne .if_0
|
||||||
cmp dword[edx+GLContext.texture_2d_enabled],0
|
cmp dword[eax+GLContext.texture_2d_enabled],0
|
||||||
jne .if_0
|
jne .if_0
|
||||||
jmp @f
|
jmp @f
|
||||||
align 4
|
align 4
|
||||||
|
@@ -17,7 +17,7 @@ proc ZB_plot uses eax ebx ecx edx edi, zb:dword, p:dword
|
|||||||
mov edi,[ebx+ZBufferPoint.z]
|
mov edi,[ebx+ZBufferPoint.z]
|
||||||
shr edi,ZB_POINT_Z_FRAC_BITS
|
shr edi,ZB_POINT_Z_FRAC_BITS
|
||||||
cmp di,word[ecx]
|
cmp di,word[ecx]
|
||||||
jb .end_f
|
jl .end_f
|
||||||
if TGL_FEATURE_RENDER_BITS eq 24
|
if TGL_FEATURE_RENDER_BITS eq 24
|
||||||
mov eax,[ebx+ZBufferPoint.r]
|
mov eax,[ebx+ZBufferPoint.r]
|
||||||
mov byte[edx],ah
|
mov byte[edx],ah
|
||||||
|
@@ -101,7 +101,7 @@ local .end_0
|
|||||||
mov [zz],eax
|
mov [zz],eax
|
||||||
mov ebx,[pz]
|
mov ebx,[pz]
|
||||||
cmp ax,word[ebx]
|
cmp ax,word[ebx]
|
||||||
jb .end_0
|
jl .end_0
|
||||||
RGBPIXEL
|
RGBPIXEL
|
||||||
mov eax,dword[zz]
|
mov eax,dword[zz]
|
||||||
mov ebx,[pz]
|
mov ebx,[pz]
|
||||||
|
@@ -102,7 +102,7 @@ local .end_0
|
|||||||
mov [zz],eax
|
mov [zz],eax
|
||||||
mov ebx,[pz]
|
mov ebx,[pz]
|
||||||
cmp ax,word[ebx]
|
cmp ax,word[ebx]
|
||||||
jb .end_0
|
jl .end_0
|
||||||
RGBPIXEL
|
RGBPIXEL
|
||||||
mov eax,dword[zz]
|
mov eax,dword[zz]
|
||||||
mov ebx,[pz]
|
mov ebx,[pz]
|
||||||
|
@@ -58,7 +58,7 @@ end if
|
|||||||
mov eax,[z]
|
mov eax,[z]
|
||||||
shr eax,ZB_POINT_Z_FRAC_BITS
|
shr eax,ZB_POINT_Z_FRAC_BITS
|
||||||
cmp ax,word[esi+2*_a] ;if (zz >= pz[_a])
|
cmp ax,word[esi+2*_a] ;if (zz >= pz[_a])
|
||||||
jb .end_0
|
jl .end_0
|
||||||
;edi = pp
|
;edi = pp
|
||||||
mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение
|
mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение
|
||||||
if TGL_FEATURE_RENDER_BITS eq 24
|
if TGL_FEATURE_RENDER_BITS eq 24
|
||||||
@@ -103,7 +103,7 @@ local .end_0
|
|||||||
mov eax,[z]
|
mov eax,[z]
|
||||||
shr eax,ZB_POINT_Z_FRAC_BITS
|
shr eax,ZB_POINT_Z_FRAC_BITS
|
||||||
cmp ax,word[esi+2*_a] ;if (zz >= pz[_a])
|
cmp ax,word[esi+2*_a] ;if (zz >= pz[_a])
|
||||||
jb .end_0
|
jl .end_0
|
||||||
;edi = pp
|
;edi = pp
|
||||||
mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение
|
mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение
|
||||||
if TGL_FEATURE_RENDER_BITS eq 24
|
if TGL_FEATURE_RENDER_BITS eq 24
|
||||||
@@ -171,7 +171,7 @@ local .end_0
|
|||||||
mov eax,[z]
|
mov eax,[z]
|
||||||
shr eax,ZB_POINT_Z_FRAC_BITS
|
shr eax,ZB_POINT_Z_FRAC_BITS
|
||||||
cmp ax,word[esi+2*_a] ;if (zz >= pz[_a])
|
cmp ax,word[esi+2*_a] ;if (zz >= pz[_a])
|
||||||
jb .end_0
|
jl .end_0
|
||||||
;edi = pp
|
;edi = pp
|
||||||
mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение
|
mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение
|
||||||
if TGL_FEATURE_RENDER_BITS eq 24
|
if TGL_FEATURE_RENDER_BITS eq 24
|
||||||
@@ -251,7 +251,7 @@ local .end_0
|
|||||||
mov eax,[z]
|
mov eax,[z]
|
||||||
shr eax,ZB_POINT_Z_FRAC_BITS
|
shr eax,ZB_POINT_Z_FRAC_BITS
|
||||||
cmp ax,word[esi+2*_a] ;if (zz >= pz[_a])
|
cmp ax,word[esi+2*_a] ;if (zz >= pz[_a])
|
||||||
jb .end_0
|
jl .end_0
|
||||||
;edi = pp
|
;edi = pp
|
||||||
mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение
|
mov word[esi+2*_a],ax ;пишем в буфер глубины новое значение
|
||||||
if TGL_FEATURE_RENDER_BITS eq 24
|
if TGL_FEATURE_RENDER_BITS eq 24
|
||||||
|
@@ -225,10 +225,8 @@ void draw_window()
|
|||||||
|
|
||||||
// Main buttons to fill the board
|
// Main buttons to fill the board
|
||||||
#define FILL_BUTTON_SIZE BUTTON_SIZE+8
|
#define FILL_BUTTON_SIZE BUTTON_SIZE+8
|
||||||
for (i=0;i<6;i++) {
|
for (i=0;i<6;i++)
|
||||||
DefineButton(i%3*FILL_BUTTON_SIZE+17,calc(i/3)*FILL_BUTTON_SIZE+15,
|
DefineButton(i%3*FILL_BUTTON_SIZE+17,i/3*FILL_BUTTON_SIZE+15,FILL_BUTTON_SIZE,FILL_BUTTON_SIZE, i+100,FIELD_COLORS[i]);
|
||||||
FILL_BUTTON_SIZE,FILL_BUTTON_SIZE, i+100,FIELD_COLORS[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Menu buttons
|
// Menu buttons
|
||||||
for (i=0;i<3;i++)
|
for (i=0;i<3;i++)
|
||||||
|
@@ -27,8 +27,6 @@ dword I_Path = 0;
|
|||||||
#define true 1
|
#define true 1
|
||||||
#define false 0
|
#define false 0
|
||||||
|
|
||||||
inline fastcall dword calc(EAX) { return EAX; }
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
@@ -16,9 +16,9 @@ include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
|
|||||||
|
|
||||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||||
if lang eq ru_RU
|
if lang eq ru_RU
|
||||||
caption db '<27><><EFBFBD>ᬮ<EFBFBD><E1ACAE> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB> 14.04.25',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
caption db '<27><><EFBFBD>ᬮ<EFBFBD><E1ACAE> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB> 11.11.20',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
else ; Default to en_US
|
else ; Default to en_US
|
||||||
caption db 'Voxel viewer 14.04.25',0
|
caption db 'Voxel viewer 11.11.20',0
|
||||||
end if
|
end if
|
||||||
|
|
||||||
3d_wnd_l equ 5 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> tinygl <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5>
|
3d_wnd_l equ 5 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> tinygl <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5>
|
||||||
@@ -750,8 +750,12 @@ draw_3d:
|
|||||||
je @f
|
je @f
|
||||||
call SetLight
|
call SetLight
|
||||||
@@:
|
@@:
|
||||||
|
stdcall [glTranslatef], 0.0,0.0,0.5 ;<3B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD> <20><> 0.0 <20><> 1.0, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20>㤥<EFBFBD> <20><>ᥪ<EFBFBD><E1A5AA><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
;<3B><><EFBFBD>ᥫ<EFBFBD><E1A5AB><EFBFBD><EFBFBD> <20><>ꥪ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><> -0.5 <20><> 0.5, <20><>⮬<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> +0.5
|
||||||
|
;<3B><> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ᥪ<EFBFBD><E1A5AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뫥<EFBFBD><EBABA5><EFBFBD> <20><> <20>।<EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><EFBFBD>⥩ <20><><EFBFBD><EFBFBD>祭<EFBFBD><E7A5AD>
|
||||||
|
;<3B> <20><><EFBFBD>ᨨ opengl <20><><EFBFBD> Win <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> -1.0 <20><> 1.0 <20><>⮬<EFBFBD> ⠬ <20>⮣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>㦭<EFBFBD>
|
||||||
stdcall [glScalef], [scale], [scale], [scale] ;㢥<><E3A2A5>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB><EFBFBD><EFBFBD> <20><>ꥪ<EFBFBD>, <20><><EFBFBD>-<2D><> <20><> <20><><EFBFBD> <20>祭<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>쪨<EFBFBD>
|
stdcall [glScalef], [scale], [scale], [scale] ;㢥<><E3A2A5>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB><EFBFBD><EFBFBD> <20><>ꥪ<EFBFBD>, <20><><EFBFBD>-<2D><> <20><> <20><><EFBFBD> <20>祭<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>쪨<EFBFBD>
|
||||||
stdcall [glScalef], 1.0, 1.0, 0.5 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD> <20><>ꥪ<EFBFBD><EAA5AA> <20><> <20>뫠<EFBFBD><EBABA0><EFBFBD><EFBFBD> <20><> <20>࠭<EFBFBD> <20><><EFBFBD><EFBFBD>祭<EFBFBD><E7A5AD>
|
stdcall [glScalef], 1.0, 1.0, 0.25 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD> <20><>ꥪ<EFBFBD><EAA5AA> <20><> <20>뫠<EFBFBD><EBABA0><EFBFBD><EFBFBD> <20><> <20>࠭<EFBFBD> <20><><EFBFBD><EFBFBD>祭<EFBFBD><E7A5AD>
|
||||||
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
||||||
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
||||||
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
||||||
|
Reference in New Issue
Block a user