diff options
72 files changed, 1752 insertions, 9744 deletions
diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index 5afac46d21..2465f49581 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -432,6 +432,16 @@ Z = erlang:adler32_combine(X,Y,iolist_size(Data2)).</code> <seealso marker="#binary_to_atom/2"><c>binary_to_atom/2</c></seealso>, but the atom must exist.</p> <p>Failure: <c>badarg</c> if the atom does not exist.</p> + <note> + <p>Note that the compiler may optimize away atoms. For + example, the compiler will rewrite + <c>atom_to_list(some_atom)</c> to <c>"some_atom"</c>. If + that expression is the only mention of the atom + <c>some_atom</c> in the containing module, the atom will not + be created when the module is loaded, and a subsequent call + to <c>binary_to_existing_atom(<<"some_atom">>, utf8)</c> + will fail.</p> + </note> </desc> </func> @@ -2478,6 +2488,15 @@ os_prompt%</pre> but only if there already exists such atom.</p> <p>Failure: <c>badarg</c> if there does not already exist an atom whose text representation is <c><anno>String</anno></c>.</p> + <note> + <p>Note that the compiler may optimize away atoms. For + example, the compiler will rewrite + <c>atom_to_list(some_atom)</c> to <c>"some_atom"</c>. If + that expression is the only mention of the atom + <c>some_atom</c> in the containing module, the atom will not + be created when the module is loaded, and a subsequent call + to <c>list_to_existing_atom("some_atom")</c> will fail.</p> + </note> </desc> </func> diff --git a/erts/emulator/beam/beam_bif_load.c b/erts/emulator/beam/beam_bif_load.c index 14ddb74324..023ee3ef4b 100644 --- a/erts/emulator/beam/beam_bif_load.c +++ b/erts/emulator/beam/beam_bif_load.c @@ -261,7 +261,7 @@ struct m { Binary* code; Eterm module; Module* modp; - Uint exception; + Eterm exception; }; static Eterm staging_epilogue(Process* c_p, int, Eterm res, int, struct m*, int, int); @@ -282,7 +282,7 @@ exception_list(Process* p, Eterm tag, struct m* mp, Sint exceptions) Eterm res = NIL; while (exceptions > 0) { - if (mp->exception) { + if (is_value(mp->exception)) { res = CONS(hp, mp->module, res); hp += 2; exceptions--; @@ -383,9 +383,9 @@ finish_loading_1(BIF_ALIST_1) exceptions = 0; for (i = 0; i < n; i++) { - p[i].exception = 0; + p[i].exception = THE_NON_VALUE; if (p[i].modp->seen) { - p[i].exception = 1; + p[i].exception = am_duplicated; exceptions++; } p[i].modp->seen = 1; @@ -419,9 +419,9 @@ finish_loading_1(BIF_ALIST_1) exceptions = 0; for (i = 0; i < n; i++) { - p[i].exception = 0; + p[i].exception = THE_NON_VALUE; if (p[i].modp->curr.code_hdr && p[i].modp->old.code_hdr) { - p[i].exception = 1; + p[i].exception = am_not_purged; exceptions++; } } @@ -442,7 +442,7 @@ finish_loading_1(BIF_ALIST_1) retval = erts_finish_loading(p[i].code, BIF_P, 0, &mod); ASSERT(retval == NIL || retval == am_on_load); if (retval == am_on_load) { - p[i].exception = 1; + p[i].exception = am_on_load; exceptions++; } } @@ -475,7 +475,8 @@ staging_epilogue(Process* c_p, int commit, Eterm res, int is_blocking, erts_commit_staging_code_ix(); for (i=0; i < nmods; i++) { - if (mods[i].modp->curr.code_hdr) { + if (mods[i].modp->curr.code_hdr + && mods[i].exception != am_on_load) { set_default_trace_pattern(mods[i].module); } #ifdef HIPE @@ -700,6 +701,7 @@ BIF_RETTYPE delete_module_1(BIF_ALIST_1) Eterm retval; mod.module = BIF_ARG_1; mod.modp = modp; + mod.exception = THE_NON_VALUE; retval = staging_epilogue(BIF_P, success, res, is_blocking, &mod, 1, 0); return retval; } diff --git a/lib/dialyzer/test/map_SUITE_data/results/loop b/lib/dialyzer/test/map_SUITE_data/results/loop new file mode 100644 index 0000000000..2e956a5709 --- /dev/null +++ b/lib/dialyzer/test/map_SUITE_data/results/loop @@ -0,0 +1,4 @@ + +loop.erl:63: The call loop:start_timer(#loop{state::'idle' | 'waiting',queues::#{'category1'=>#queue{limit::non_neg_integer(),buffer::[any()]}, 'category2'=>#queue{limit::non_neg_integer(),buffer::[any()]}},counters::#{'counter1':=10, 2:=10}}) does not have a term of type #loop{state::'idle' | 'waiting',timer::timer:tref(),queues::#{'category1'=>#queue{limit::non_neg_integer(),buffer::[any()]}, 'category2'=>#queue{limit::non_neg_integer(),buffer::[any()]}},counters::#{'counter1'=>non_neg_integer(), 2=>non_neg_integer()}} (with opaque subterms) as 1st argument +loop.erl:67: Function wait/1 has no local return +loop.erl:85: Record construction #loop{state::'idle' | 'waiting',timer::{'error',_} | {'ok',timer:tref()},queues::#{'category1'=>#queue{limit::non_neg_integer(),buffer::[any()]}, 'category2'=>#queue{limit::non_neg_integer(),buffer::[any()]}},counters::#{'counter1'=>non_neg_integer(), 2=>non_neg_integer()}} violates the declared type of field timer::'undefined' | timer:tref() diff --git a/lib/dialyzer/test/map_SUITE_data/results/map_galore b/lib/dialyzer/test/map_SUITE_data/results/map_galore index c34ba5cf30..9a140de255 100644 --- a/lib/dialyzer/test/map_SUITE_data/results/map_galore +++ b/lib/dialyzer/test/map_SUITE_data/results/map_galore @@ -1,11 +1,11 @@ map_galore.erl:1000: A key of type 42 cannot exist in a map of type #{1:='a', 2:='b', 4:='d', 5:='e', float()=>'c' | 'v'} -map_galore.erl:1080: A key of type 'nonexisting' cannot exist in a map of type #{#{'map':='key', 'one':='small'}:=[32 | 49 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'second':='small'}:=[32 | 50 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'third':='small'}:=[32 | 51 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], 10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 16:='a6', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 26:='b6', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 36:=[54 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]} | #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], 'k16'=>'a6', 'k26'=>'b6', 'k36'=>[54 | 99,...], 16=>'a6', 26=>'b6', 36=>[54 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]}=>[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 100 | 101,...]}=>atom() | [1..255,...]} -map_galore.erl:1082: A key of type 42 cannot exist in a map of type #{#{'map':='key', 'one':='small'}:=[32 | 49 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'second':='small'}:=[32 | 50 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'third':='small'}:=[32 | 51 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], 10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 16:='a6', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 26:='b6', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 36:=[54 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]} | #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], 'k16'=>'a6', 'k26'=>'b6', 'k36'=>[54 | 99,...], 16=>'a6', 26=>'b6', 36=>[54 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]}=>[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 100 | 101,...]}=>atom() | [1..255,...]} -map_galore.erl:1140: The call map_galore:map_guard_sequence_1(#{'seq':=6, 'val':=[101,...]}) will never return since it differs in the 1st argument from the success typing arguments: (#{'seq':=1 | 2 | 3 | 4 | 5, 'val':=[97 | 98 | 99 | 100 | 101,...], #{'map':='key', 'one':='small'}=>[32 | 49 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'second':='small'}=>[32 | 50 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'third':='small'}=>[32 | 51 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[any(),...]} | #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 27:='b7', 28:='b8', 29:='b9', 30:=[any(),...], 31:=[any(),...], 32:=[any(),...], 33:=[any(),...], 34:=[any(),...], 35:=[any(),...], 37:=[any(),...], 38:=[any(),...], 39:=[any(),...], 'k16'=>'a6', 'k26'=>'b6', 'k36'=>[any(),...], 16=>'a6', 26=>'b6', 36=>[any(),...], <<_:16>> | [any(),...] | {_}=>[any(),...]}=>atom() | [1..255,...]}) -map_galore.erl:1141: The call map_galore:map_guard_sequence_2(#{'b':=5}) will never return since it differs in the 1st argument from the success typing arguments: (#{'a':='gg' | 'kk' | 'sc' | 3 | 4, 'b'=>'other' | 3 | 4 | 5, 'c'=>'sc2', #{'map':='key', 'one':='small'}=>[32 | 49 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'second':='small'}=>[32 | 50 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'third':='small'}=>[32 | 51 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[any(),...]} | #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 27:='b7', 28:='b8', 29:='b9', 30:=[any(),...], 31:=[any(),...], 32:=[any(),...], 33:=[any(),...], 34:=[any(),...], 35:=[any(),...], 37:=[any(),...], 38:=[any(),...], 39:=[any(),...], 'k16'=>'a6', 'k26'=>'b6', 'k36'=>[any(),...], 16=>'a6', 26=>'b6', 36=>[any(),...], <<_:16>> | [any(),...] | {_}=>[any(),...]}=>atom() | [1..255,...]}) -map_galore.erl:1209: The call map_galore:map_guard_sequence_1(#{'seq':=6, 'val':=[101,...], #{'map':='key', 'one':='small'}:=[32 | 49 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'second':='small'}:=[32 | 50 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'third':='small'}:=[32 | 51 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], 10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 16:='a6', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 26:='b6', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 36:=[54 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | 3,...]} | #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], 'k16'=>'a6', 'k26'=>'b6', 'k36'=>[54 | 99,...], 16=>'a6', 26=>'b6', 36=>[54 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]}=>[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 100 | 101,...]}=>atom() | [1..255,...]}) will never return since it differs in the 1st argument from the success typing arguments: (#{'seq':=1 | 2 | 3 | 4 | 5, 'val':=[97 | 98 | 99 | 100 | 101,...], #{'map':='key', 'one':='small'}=>[32 | 49 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'second':='small'}=>[32 | 50 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'third':='small'}=>[32 | 51 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[any(),...]} | #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 27:='b7', 28:='b8', 29:='b9', 30:=[any(),...], 31:=[any(),...], 32:=[any(),...], 33:=[any(),...], 34:=[any(),...], 35:=[any(),...], 37:=[any(),...], 38:=[any(),...], 39:=[any(),...], 'k16'=>'a6', 'k26'=>'b6', 'k36'=>[any(),...], 16=>'a6', 26=>'b6', 36=>[any(),...], <<_:16>> | [any(),...] | {_}=>[any(),...]}=>atom() | [1..255,...]}) -map_galore.erl:1210: The call map_galore:map_guard_sequence_2(#{'b':=5, #{'map':='key', 'one':='small'}:=[32 | 49 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'second':='small'}:=[32 | 50 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'third':='small'}:=[32 | 51 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], 10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 16:='a6', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 26:='b6', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 36:=[54 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | 3,...]} | #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], 'k16'=>'a6', 'k26'=>'b6', 'k36'=>[54 | 99,...], 16=>'a6', 26=>'b6', 36=>[54 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]}=>[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 100 | 101,...]}=>atom() | [1..255,...]}) will never return since it differs in the 1st argument from the success typing arguments: (#{'a':='gg' | 'kk' | 'sc' | 3 | 4, 'b'=>'other' | 3 | 4 | 5, 'c'=>'sc2', #{'map':='key', 'one':='small'}=>[32 | 49 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'second':='small'}=>[32 | 50 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], #{'map':='key', 'third':='small'}=>[32 | 51 | 97 | 101 | 107 | 108 | 109 | 112 | 115 | 121,...], 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[any(),...]} | #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 27:='b7', 28:='b8', 29:='b9', 30:=[any(),...], 31:=[any(),...], 32:=[any(),...], 33:=[any(),...], 34:=[any(),...], 35:=[any(),...], 37:=[any(),...], 38:=[any(),...], 39:=[any(),...], 'k16'=>'a6', 'k26'=>'b6', 'k36'=>[any(),...], 16=>'a6', 26=>'b6', 36=>[any(),...], <<_:16>> | [any(),...] | {_}=>[any(),...]}=>atom() | [1..255,...]}) +map_galore.erl:1080: A key of type 'nonexisting' cannot exist in a map of type #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 16:='a6', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 26:='b6', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 36:=[54 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]} | #{'k16'=>'a6', 'k26'=>'b6', 'k36'=>[54 | 99,...], 'map'=>'key', 'one'=>'small', 'second'=>'small', 'third'=>'small', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]}=>[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 100 | 101,...]}=>atom() | [1..255,...]} +map_galore.erl:1082: A key of type 42 cannot exist in a map of type #{10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 16:='a6', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 26:='b6', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 36:=[54 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]} | #{'k16'=>'a6', 'k26'=>'b6', 'k36'=>[54 | 99,...], 'map'=>'key', 'one'=>'small', 'second'=>'small', 'third'=>'small', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]}=>[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 100 | 101,...]}=>atom() | [1..255,...]} +map_galore.erl:1140: The call map_galore:map_guard_sequence_1(#{'seq':=6, 'val':=[101,...]}) will never return since it differs in the 1st argument from the success typing arguments: (#{'seq':=1 | 2 | 3 | 4 | 5, 'val':=[97 | 98 | 99 | 100 | 101,...], 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[any(),...]} | #{'k16'=>'a6', 'k26'=>'b6', 'k36'=>[any(),...], 'map'=>'key', 'one'=>'small', 'second'=>'small', 'third'=>'small', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[any(),...], 31=>[any(),...], 32=>[any(),...], 33=>[any(),...], 34=>[any(),...], 35=>[any(),...], 36=>[any(),...], 37=>[any(),...], 38=>[any(),...], 39=>[any(),...], <<_:16>> | [any(),...] | {_}=>[any(),...]}=>atom() | [1..255,...]}) +map_galore.erl:1141: The call map_galore:map_guard_sequence_2(#{'b':=5}) will never return since it differs in the 1st argument from the success typing arguments: (#{'a':='gg' | 'kk' | 'sc' | 3 | 4, 'b'=>'other' | 3 | 4 | 5, 'c'=>'sc2', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[any(),...]} | #{'k16'=>'a6', 'k26'=>'b6', 'k36'=>[any(),...], 'map'=>'key', 'one'=>'small', 'second'=>'small', 'third'=>'small', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[any(),...], 31=>[any(),...], 32=>[any(),...], 33=>[any(),...], 34=>[any(),...], 35=>[any(),...], 36=>[any(),...], 37=>[any(),...], 38=>[any(),...], 39=>[any(),...], <<_:16>> | [any(),...] | {_}=>[any(),...]}=>atom() | [1..255,...]}) +map_galore.erl:1209: The call map_galore:map_guard_sequence_1(#{'seq':=6, 'val':=[101,...], 10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 16:='a6', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 26:='b6', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 36:=[54 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | 3,...]} | #{'k16'=>'a6', 'k26'=>'b6', 'k36'=>[54 | 99,...], 'map'=>'key', 'one'=>'small', 'second'=>'small', 'third'=>'small', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]}=>[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 100 | 101,...]}=>atom() | [1..255,...]}) will never return since it differs in the 1st argument from the success typing arguments: (#{'seq':=1 | 2 | 3 | 4 | 5, 'val':=[97 | 98 | 99 | 100 | 101,...], 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[any(),...]} | #{'k16'=>'a6', 'k26'=>'b6', 'k36'=>[any(),...], 'map'=>'key', 'one'=>'small', 'second'=>'small', 'third'=>'small', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[any(),...], 31=>[any(),...], 32=>[any(),...], 33=>[any(),...], 34=>[any(),...], 35=>[any(),...], 36=>[any(),...], 37=>[any(),...], 38=>[any(),...], 39=>[any(),...], <<_:16>> | [any(),...] | {_}=>[any(),...]}=>atom() | [1..255,...]}) +map_galore.erl:1210: The call map_galore:map_guard_sequence_2(#{'b':=5, 10:='a0', 11:='a1', 12:='a2', 13:='a3', 14:='a4', 15:='a5', 16:='a6', 17:='a7', 18:='a8', 19:='a9', 20:='b0', 21:='b1', 22:='b2', 23:='b3', 24:='b4', 25:='b5', 26:='b6', 27:='b7', 28:='b8', 29:='b9', 30:=[48 | 99,...], 31:=[49 | 99,...], 32:=[50 | 99,...], 33:=[51 | 99,...], 34:=[52 | 99,...], 35:=[53 | 99,...], 36:=[54 | 99,...], 37:=[55 | 99,...], 38:=[56 | 99,...], 39:=[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | 3,...]} | #{'k16'=>'a6', 'k26'=>'b6', 'k36'=>[54 | 99,...], 'map'=>'key', 'one'=>'small', 'second'=>'small', 'third'=>'small', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | {[[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...],...]}=>[48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 100 | 101,...]}=>atom() | [1..255,...]}) will never return since it differs in the 1st argument from the success typing arguments: (#{'a':='gg' | 'kk' | 'sc' | 3 | 4, 'b'=>'other' | 3 | 4 | 5, 'c'=>'sc2', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[48 | 99,...], 31=>[49 | 99,...], 32=>[50 | 99,...], 33=>[51 | 99,...], 34=>[52 | 99,...], 35=>[53 | 99,...], 36=>[54 | 99,...], 37=>[55 | 99,...], 38=>[56 | 99,...], 39=>[57 | 99,...], <<_:16>> | [48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57,...] | float() | {[any(),...]} | #{'k16'=>'a6', 'k26'=>'b6', 'k36'=>[any(),...], 'map'=>'key', 'one'=>'small', 'second'=>'small', 'third'=>'small', 10=>'a0', 11=>'a1', 12=>'a2', 13=>'a3', 14=>'a4', 15=>'a5', 16=>'a6', 17=>'a7', 18=>'a8', 19=>'a9', 20=>'b0', 21=>'b1', 22=>'b2', 23=>'b3', 24=>'b4', 25=>'b5', 26=>'b6', 27=>'b7', 28=>'b8', 29=>'b9', 30=>[any(),...], 31=>[any(),...], 32=>[any(),...], 33=>[any(),...], 34=>[any(),...], 35=>[any(),...], 36=>[any(),...], 37=>[any(),...], 38=>[any(),...], 39=>[any(),...], <<_:16>> | [any(),...] | {_}=>[any(),...]}=>atom() | [1..255,...]}) map_galore.erl:1418: Fun application with arguments (#{'s':='none', 'v':='none'}) will never return since it differs in the 1st argument from the success typing arguments: (#{'s':='l' | 't' | 'v', 'v':='none' | <<_:16>> | [<<_:16>>,...] | {<<_:16>>,<<_:16>>}}) map_galore.erl:1491: The test #{} =:= #{'a':=1} can never evaluate to 'true' map_galore.erl:1492: The test #{'a':=1} =:= #{} can never evaluate to 'true' diff --git a/lib/dialyzer/test/map_SUITE_data/results/opaque_key b/lib/dialyzer/test/map_SUITE_data/results/opaque_key index 2ae0e0c5c6..8d6379b5e0 100644 --- a/lib/dialyzer/test/map_SUITE_data/results/opaque_key +++ b/lib/dialyzer/test/map_SUITE_data/results/opaque_key @@ -1,4 +1,5 @@ +opaque_key_adt.erl:35: Invalid type specification for function opaque_key_adt:s2/0. The success typing is () -> #{3:='a'} opaque_key_adt.erl:41: Invalid type specification for function opaque_key_adt:s4/0. The success typing is () -> #{1:='a'} opaque_key_adt.erl:44: Invalid type specification for function opaque_key_adt:s5/0. The success typing is () -> #{2:=3} opaque_key_adt.erl:56: Invalid type specification for function opaque_key_adt:smt1/0. The success typing is () -> #{3:='a'} diff --git a/lib/dialyzer/test/map_SUITE_data/src/loop.erl b/lib/dialyzer/test/map_SUITE_data/src/loop.erl new file mode 100644 index 0000000000..c861052d9f --- /dev/null +++ b/lib/dialyzer/test/map_SUITE_data/src/loop.erl @@ -0,0 +1,92 @@ +-module(loop). + +-export([timeout/2]). + +-export([idle/2, waiting/2]). + +-type request_category() :: category1 | category2. + +-type counter() :: counter1 | 2. + +-type counters() :: #{counter() => non_neg_integer()}. + +-record(queue, {limit = 0 :: non_neg_integer(), + buffer = [] :: list()}). + +-type request_queues() :: #{request_category() => #queue{}}. + +-record(?MODULE, + {state = idle :: idle | waiting, + timer = undefined :: undefined | timer:tref(), + queues = #{category1 => #queue{}, + category2 => #queue{}} :: request_queues(), + counters = new_counters() :: counters()}). +-spec timeout(Ref, Timer :: timer:tref()) -> {noreply, Ref}. +timeout(Ref, Timer) -> + handle_message(Ref, {timeout, Timer}). + +-type message() :: {reset, request_category()} + | {timeout, timer:tref()}. + +-spec handle_message(Ref, Message :: message()) -> + {reply, boolean(), Ref} | {noreply, Ref}. +handle_message(Ref, Msg) -> + MV = #?MODULE{state = State} = get(mv), + case apply(?MODULE, State, [Msg, MV]) of + {reply, Result, NewMV} -> + put(mv, NewMV), + {reply, Result, Ref}; + {noreply, NewMV} -> + put(mv, NewMV), + {noreply, Ref} + end. + +-spec idle(Message :: message(), #?MODULE{}) -> + {reply, boolean(), #?MODULE{}} | {noreply, #?MODULE{}}. +idle({reset, Category}, MV = #?MODULE{queues = Queues}) -> + case Queues of + #{Category := #queue{limit = 0}} -> + {reply, false, MV}; + _ -> + wait(MV) + end; +idle(_, MV) -> + {noreply, MV}. + +-spec waiting(Message :: message(), #?MODULE{}) -> + {reply, boolean(), #?MODULE{}} | {noreply, #?MODULE{}}. +waiting({reset, _Category}, MV = #?MODULE{}) -> + NewMV = stop_timer(MV), + {noreply, NewMV#?MODULE{state = idle}}; +waiting({timeout, Timer}, #?MODULE{timer = Timer} = MV) -> + %% The opaque warning is an effect of the call to timer:send_after(). + {noreply, start_timer(MV#?MODULE{timer = undefined, + counters = new_counters()})}. + +-spec wait(#?MODULE{}) -> {noreply, #?MODULE{}}. +wait(MV) -> + {noreply, start_timer(MV#?MODULE{state = waiting})}. + +-spec stop_timer(#?MODULE{}) -> #?MODULE{}. +stop_timer(MV) -> + case MV#?MODULE.timer of + undefined -> + MV; + Timer -> + timer:cancel(Timer), + MV#?MODULE{timer = undefined} + end. + +-spec start_timer(MV :: #?MODULE{}) -> #?MODULE{}. +start_timer(MV) -> + case MV#?MODULE.timer of + undefined -> + %% Note: timer:send_after() returns {ok, TRef} | {error, _}. + MV#?MODULE{timer = timer:send_after(1000, ?MODULE)}; + _Timer -> + start_timer(stop_timer(MV)) + end. + +-spec new_counters() -> counters(). +new_counters() -> + #{counter1 => 10, 2 => 10}. diff --git a/lib/dialyzer/test/map_SUITE_data/src/opaque_key/opaque_key_adt.erl b/lib/dialyzer/test/map_SUITE_data/src/opaque_key/opaque_key_adt.erl index b98c713c6b..9228cfa413 100644 --- a/lib/dialyzer/test/map_SUITE_data/src/opaque_key/opaque_key_adt.erl +++ b/lib/dialyzer/test/map_SUITE_data/src/opaque_key/opaque_key_adt.erl @@ -33,7 +33,7 @@ s0() -> #{}. s1() -> #{3 => a}. -spec s2() -> s(atom() | 3). -s2() -> #{3 => a}. %% Contract breakage (not found) +s2() -> #{3 => a}. %% Contract breakage -spec s3() -> s(atom() | 3). s3() -> #{3 => 5, a => 6, 7 => 8}. diff --git a/lib/et/test/et_test_lib.erl b/lib/et/test/et_test_lib.erl index df2c308b28..fc469f646a 100644 --- a/lib/et/test/et_test_lib.erl +++ b/lib/et/test/et_test_lib.erl @@ -18,7 +18,7 @@ %% %CopyrightEnd% -module(et_test_lib). --compile(export_all). +-compile([export_all, nowarn_export_all]). -include("et_test_lib.hrl"). diff --git a/lib/et/test/ett.erl b/lib/et/test/ett.erl index b1b769b7ac..2b276eab1a 100644 --- a/lib/et/test/ett.erl +++ b/lib/et/test/ett.erl @@ -18,7 +18,7 @@ %% %CopyrightEnd% -module(ett). --compile(export_all). +-compile([export_all, nowarn_export_all]). %% Modules or suites can be shortcuts, for example wx expands to et_wx_SUITE. %% diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl index f4746fc9d0..abb6c259f6 100644 --- a/lib/hipe/cerl/erl_types.erl +++ b/lib/hipe/cerl/erl_types.erl @@ -1630,8 +1630,8 @@ lift_list_to_pos_empty(?list(Content, Termination, _)) -> %% * The keys in Pairs are singleton types. %% * The values of Pairs must not be unit, and may only be none if the %% mandatoriness tag is 'optional'. -%% * Optional must contain no pair {K,V} s.t. K is a subtype of DefaultKey and -%% V is equal to DefaultKey. +%% * There is no pair {K, 'optional', V} in Pairs s.t. +%% K is a subtype of DefaultKey and V is equal to DefaultValue. %% * DefaultKey must be the empty type iff DefaultValue is the empty type. %% * DefaultKey must not be a singleton type. %% * For every key K in Pairs, DefaultKey - K must not be representable; i.e. @@ -4675,7 +4675,8 @@ from_form({type, _L, map, List}, S, D0, L, C) -> end end(List, L, C), try - {Pairs, DefK, DefV} = map_from_form(Pairs1, [], [], [], ?none, ?none), + Pairs2 = singleton_elements(Pairs1), + {Pairs, DefK, DefV} = map_from_form(Pairs2, [], [], [], ?none, ?none), {t_map(Pairs, DefK, DefV), L5, C5} catch none -> {t_none(), L5, C5} end; @@ -5026,6 +5027,30 @@ list_from_form([H|Tail], S, D, L, C) -> {T1, L2, C2} = list_from_form(Tail, S, D, L1, C1), {[H1|T1], L2, C2}. +%% Separates singleton types in keys (see is_singleton_type/1). +singleton_elements([]) -> + []; +singleton_elements([{K,?mand,V}=Pair|Pairs]) -> + case is_singleton_type(K) of + true -> + [Pair|singleton_elements(Pairs)]; + false -> + singleton_elements([{K,?opt,V}|Pairs]) + end; +singleton_elements([{Key0,MNess,Val}|Pairs]) -> + [{Key,MNess,Val} || Key <- separate_key(Key0)] ++ singleton_elements(Pairs). + +%% To be in sync with is_singleton_type/1. +%% Does not separate tuples and maps as doing that has potential +%% to be very expensive. +separate_key(?atom(Atoms)) when Atoms =/= ?any -> + [t_atom(A) || A <- Atoms]; +separate_key(?number(_, _) = T) -> + t_elements(T); +separate_key(?union(List)) -> + lists:append([separate_key(K) || K <- List, not t_is_none(K)]); +separate_key(Key) -> [Key]. + %% Sorts, combines non-singleton pairs, and applies precendence and %% mandatoriness rules. map_from_form([], ShdwPs, MKs, Pairs, DefK, DefV) -> @@ -5475,7 +5500,8 @@ t_is_singleton(Type) -> t_is_singleton(Type, Opaques) -> do_opaque(Type, Opaques, fun is_singleton_type/1). -%% Incomplete; not all representable singleton types are included. +%% To be in sync with separate_key/1. +%% Used to also recognize maps and tuples. is_singleton_type(?nil) -> true; is_singleton_type(?atom(?any)) -> false; is_singleton_type(?atom(Set)) -> @@ -5483,13 +5509,6 @@ is_singleton_type(?atom(Set)) -> is_singleton_type(?int_range(V, V)) -> true; is_singleton_type(?int_set(Set)) -> ordsets:size(Set) =:= 1; -is_singleton_type(?tuple(Types, Arity, _)) when is_integer(Arity) -> - lists:all(fun is_singleton_type/1, Types); -is_singleton_type(?tuple_set([{Arity, [OnlyTuple]}])) when is_integer(Arity) -> - is_singleton_type(OnlyTuple); -is_singleton_type(?map(Pairs, ?none, ?none)) -> - lists:all(fun({_,MNess,V}) -> MNess =:= ?mand andalso is_singleton_type(V) - end, Pairs); is_singleton_type(_) -> false. diff --git a/lib/hipe/test/opt_verify_SUITE.erl b/lib/hipe/test/opt_verify_SUITE.erl index 86083fa02b..a323c10503 100644 --- a/lib/hipe/test/opt_verify_SUITE.erl +++ b/lib/hipe/test/opt_verify_SUITE.erl @@ -44,7 +44,7 @@ call_elim(Config) -> Icode5 = call_elim_test_file(Config, F3, icode_call_elim), 0 = substring_count(binary:bin_to_list(Icode5), "is_key"), Icode6 = call_elim_test_file(Config, F3, no_icode_call_elim), - 3 = substring_count(binary:bin_to_list(Icode6), "is_key"), + 2 = substring_count(binary:bin_to_list(Icode6), "is_key"), ok. call_elim_test_file(Config, FileName, Option) -> diff --git a/lib/hipe/test/opt_verify_SUITE_data/call_elim_test_branches_opt_poss.erl b/lib/hipe/test/opt_verify_SUITE_data/call_elim_test_branches_opt_poss.erl index c8ddfa1e75..12875f41af 100644 --- a/lib/hipe/test/opt_verify_SUITE_data/call_elim_test_branches_opt_poss.erl +++ b/lib/hipe/test/opt_verify_SUITE_data/call_elim_test_branches_opt_poss.erl @@ -6,17 +6,11 @@ test(A) -> if A > 0 -> true = has_a_field(#{a=>true}), true = has_a_field(#{b=>1, a=>"2"}), - true = has_a_field(#{a=>5, c=>4}), - true = has_tuple_field(#{{ab, 1}=><<"qq">>, 1 =>0}), - true = has_tuple_field(#{up =>down, {ab, 1}=>[]}), - true = has_tuple_field(#{{ab, 1}=>42}); + true = has_a_field(#{a=>5, c=>4}); A =< 0 -> true = has_a_field(#{a=>q, 'A' =>nej}), true = has_a_field(#{a=>"hej", false=>true}), - true = has_a_field(#{a=>3}), - true = has_tuple_field(#{{ab, 1}=>q, 'A' =>nej}), - true = has_tuple_field(#{{ab, 1}=>"hej", false=>true}), - true = has_tuple_field(#{{ab, 1}=>3}) + true = has_a_field(#{a=>3}) end, true = has_nil_field(#{[] =>3, b =>"seven"}), true = has_nil_field(#{"seventeen"=>17, []=>nil}), diff --git a/lib/kernel/src/error_logger.erl b/lib/kernel/src/error_logger.erl index f07ec52cfa..585507c545 100644 --- a/lib/kernel/src/error_logger.erl +++ b/lib/kernel/src/error_logger.erl @@ -499,16 +499,31 @@ display4(A = [_|_]) -> display4(A) -> erlang:display(A). - -string_p(Term) when is_list(Term) -> - string_p1(lists:flatten(Term)); -string_p(_Term) -> - false. - -string_p1([]) -> +string_p([]) -> false; -string_p1(FlatList) -> - io_lib:printable_list(FlatList). +string_p(Term) -> + string_p1(Term). + +string_p1([H|T]) when is_integer(H), H >= $\040, H =< $\176 -> + string_p1(T); +string_p1([H|T]) when is_integer(H), H >= 16#A0, H < 16#D800; + is_integer(H), H > 16#DFFF, H < 16#FFFE; + is_integer(H), H > 16#FFFF, H =< 16#10FFFF -> + string_p1(T); +string_p1([$\n|T]) -> string_p1(T); +string_p1([$\r|T]) -> string_p1(T); +string_p1([$\t|T]) -> string_p1(T); +string_p1([$\v|T]) -> string_p1(T); +string_p1([$\b|T]) -> string_p1(T); +string_p1([$\f|T]) -> string_p1(T); +string_p1([$\e|T]) -> string_p1(T); +string_p1([H|T]) when is_list(H) -> + case string_p1(H) of + true -> string_p1(T); + _ -> false + end; +string_p1([]) -> true; +string_p1(_) -> false. -spec limit_term(term()) -> term(). diff --git a/lib/kernel/test/code_SUITE.erl b/lib/kernel/test/code_SUITE.erl index 6f8e949aac..612f77149d 100644 --- a/lib/kernel/test/code_SUITE.erl +++ b/lib/kernel/test/code_SUITE.erl @@ -35,6 +35,7 @@ purge_stacktrace/1, mult_lib_roots/1, bad_erl_libs/1, code_archive/1, code_archive2/1, on_load/1, on_load_binary/1, on_load_embedded/1, on_load_errors/1, on_load_update/1, + on_load_trace_on_load/1, on_load_purge/1, on_load_self_call/1, on_load_pending/1, on_load_deleted/1, big_boot_embedded/1, @@ -66,14 +67,16 @@ all() -> ext_mod_dep, clash, where_is_file, purge_stacktrace, mult_lib_roots, bad_erl_libs, code_archive, code_archive2, on_load, - on_load_binary, on_load_embedded, on_load_errors, on_load_update, + on_load_binary, on_load_embedded, on_load_errors, + {group, sequence}, on_load_purge, on_load_self_call, on_load_pending, on_load_deleted, module_status, big_boot_embedded, native_early_modules, get_mode, normalized_paths]. -groups() -> - []. +%% These need to run in order +groups() -> [{sequence, [sequence], [on_load_update, + on_load_trace_on_load]}]. init_per_group(_GroupName, Config) -> Config. @@ -1493,7 +1496,7 @@ do_on_load_error(ReturnValue) -> {undef,[{on_load_error,main,[],_}|_]} = Exit end. -on_load_update(_Config) -> +on_load_update(Config) -> {Mod,Code1} = on_load_update_code(1), {module,Mod} = code:load_binary(Mod, "", Code1), 42 = Mod:a(), @@ -1503,7 +1506,7 @@ on_load_update(_Config) -> {Mod,Code2} = on_load_update_code(2), {error,on_load_failure} = code:load_binary(Mod, "", Code2), 42 = Mod:a(), - 100 = Mod:b(99), + 78 = Mod:b(77), {'EXIT',{undef,_}} = (catch Mod:never()), 4 = erlang:trace_pattern({Mod,'_','_'}, false), @@ -1514,6 +1517,9 @@ on_load_update(_Config) -> {'EXIT',{undef,_}} = (catch Mod:b(10)), {'EXIT',{undef,_}} = (catch Mod:never()), + code:purge(Mod), + code:delete(Mod), + code:purge(Mod), ok. on_load_update_code(Version) -> @@ -1545,6 +1551,40 @@ on_load_update_code_1(3, Mod) -> "f() -> ok.\n", "c() -> 100.\n"]). +%% Test -on_load while trace feature 'on_load' is enabled (OTP-14612) +on_load_trace_on_load(Config) -> + Papa = self(), + Tracer = spawn_link(fun F() -> receive M -> Papa ! M end, F() end), + {tracer,[]} = erlang:trace_info(self(),tracer), + erlang:trace(self(), true, [call, {tracer, Tracer}]), + erlang:trace_pattern(on_load, true, []), + on_load_update(Config), + erlang:trace_pattern(on_load, false, []), + erlang:trace(self(), false, [call]), + + %% WE GET TRACES FOR CALLS TO UNDEFINED FUNCTIONS ??? + %% Remove filter when that is fixed. + Ms = lists:filter(fun({trace,Papa,call, + {error_handler,undefined_function, + [on_load_update_code,_,_]}}) + -> false; + (_) -> true + end, + flush()), + + [{trace, Papa, call, {on_load_update_code, a, []}}, + {trace, Papa, call, {on_load_update_code, b, [99]}}, + {trace, Papa, call, {on_load_update_code, c, []}}] = Ms, + + exit(Tracer, normal), + ok. + +flush() -> + receive M -> [M | flush()] + after 100 -> [] + end. + + on_load_purge(_Config) -> Mod = ?FUNCTION_NAME, register(Mod, self()), diff --git a/lib/mnesia/doc/src/company.erl b/lib/mnesia/doc/src/company.erl index 20e3235347..5a3b122394 100644 --- a/lib/mnesia/doc/src/company.erl +++ b/lib/mnesia/doc/src/company.erl @@ -19,7 +19,12 @@ %% -module(company). --compile(export_all). +-export([init/0,insert_emp/3,mk_projs/2,females/0,all_females/0, + g/0,female_bosses/0, raise_females/1, over_write/2, raise/2, + bad_raise/2, get_emps/2, get_emps2/2, filter/2, filter_deps/3, + search_deps/3, bench1/0, dotimes/2, dist_init/0, remove_proj/1, + del_in_projs/1, sync/0, tabs/0, find_male_on_second_floor/0, + panic/1, fill_tables/0]). %0 diff --git a/lib/mnesia/doc/src/company_o.erl b/lib/mnesia/doc/src/company_o.erl index 7300e9d4bb..650b6cdeca 100644 --- a/lib/mnesia/doc/src/company_o.erl +++ b/lib/mnesia/doc/src/company_o.erl @@ -19,7 +19,11 @@ %% -module(company_o). --compile(export_all). + +-export([sinit/0, init/0,insert_emp/3,females/0, + female_bosses/0, raise_females/1, over_write/2, raise/2, + bad_raise/2, get_emps/2, get_emps2/2]). + -import(mnesia, [transaction/1]). diff --git a/lib/mnesia/test/mnesia_SUITE.erl b/lib/mnesia/test/mnesia_SUITE.erl index 3ec4847c5d..279744dbb0 100644 --- a/lib/mnesia/test/mnesia_SUITE.erl +++ b/lib/mnesia/test/mnesia_SUITE.erl @@ -21,7 +21,12 @@ %% -module(mnesia_SUITE). -author('[email protected]'). --compile([export_all]). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_suite/1, end_per_suite/1, + init_per_group/2, end_per_group/2, + suite/0, all/0, groups/0]). +-export([app/1, appup/1, clean_up_suite/1, silly/0]). + -include_lib("common_test/include/ct.hrl"). -include("mnesia_test_lib.hrl"). @@ -92,16 +97,8 @@ groups() -> %% benchmarks {heavy, [], [{group, measure}]}, {measure, [], [{mnesia_measure_test, all}]}, - {prediction, [], - [{group, mnesia_measure_test, prediction}]}, - {fairness, [], - [{group, mnesia_measure_test, fairness}]}, {benchmarks, [], [{group, mnesia_measure_test, benchmarks}]}, - {consumption, [], - [{group, mnesia_measure_test, consumption}]}, - {scalability, [], - [{group, mnesia_measure_test, scalability}]}, %% This test suite is an extract of the grand Mnesia suite %% it contains OTP R4B specific test cases {otp_r4b, [], diff --git a/lib/mnesia/test/mnesia_atomicity_test.erl b/lib/mnesia/test/mnesia_atomicity_test.erl index cc32ba3826..58a5dc1d40 100644 --- a/lib/mnesia/test/mnesia_atomicity_test.erl +++ b/lib/mnesia/test/mnesia_atomicity_test.erl @@ -22,9 +22,37 @@ -module(mnesia_atomicity_test). -author('[email protected]'). -author('[email protected]'). --compile([export_all]). -include("mnesia_test_lib.hrl"). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). +-export([explicit_abort_in_middle_of_trans/1, + runtime_error_in_middle_of_trans/1, + mnesia_down_during_infinite_trans/1, + kill_self_in_middle_of_trans/1, throw_in_middle_of_trans/1, + lock_waiter_sw_r/1, lock_waiter_sw_rt/1, lock_waiter_sw_wt/1, + lock_waiter_wr_r/1, lock_waiter_srw_r/1, lock_waiter_sw_sw/1, + lock_waiter_sw_w/1, lock_waiter_sw_wr/1, lock_waiter_sw_srw/1, + lock_waiter_wr_wt/1, lock_waiter_srw_wt/1, + lock_waiter_wr_sw/1, lock_waiter_srw_sw/1, lock_waiter_wr_w/1, + lock_waiter_srw_w/1, lock_waiter_r_sw/1, lock_waiter_r_w/1, + lock_waiter_r_wt/1, lock_waiter_rt_sw/1, lock_waiter_rt_w/1, + lock_waiter_rt_wt/1, lock_waiter_wr_wr/1, + lock_waiter_srw_srw/1, lock_waiter_wt_r/1, lock_waiter_wt_w/1, + lock_waiter_wt_rt/1, lock_waiter_wt_wt/1, lock_waiter_wt_wr/1, + lock_waiter_wt_srw/1, lock_waiter_wt_sw/1, lock_waiter_w_wr/1, + lock_waiter_w_srw/1, lock_waiter_w_sw/1, lock_waiter_w_r/1, + lock_waiter_w_w/1, lock_waiter_w_rt/1, lock_waiter_w_wt/1, + restart_r_one/1, restart_w_one/1, restart_rt_one/1, + restart_wt_one/1, restart_wr_one/1, restart_sw_one/1, + restart_r_two/1, restart_w_two/1, restart_rt_two/1, + restart_wt_two/1, restart_wr_two/1, restart_sw_two/1 + ] + ). + +-export([perform_restarted_transaction/1, sync_tid_release/0]). + init_per_testcase(Func, Conf) -> mnesia_test_lib:init_per_testcase(Func, Conf). diff --git a/lib/mnesia/test/mnesia_bench_SUITE.erl b/lib/mnesia/test/mnesia_bench_SUITE.erl index 7c86db383d..5cc01867c4 100644 --- a/lib/mnesia/test/mnesia_bench_SUITE.erl +++ b/lib/mnesia/test/mnesia_bench_SUITE.erl @@ -21,7 +21,13 @@ %% -module(mnesia_bench_SUITE). -author('[email protected]'). --compile(export_all). + +-export([init_per_testcase/2, end_per_testcase/2, + init_per_suite/1, end_per_suite/1, + init_per_group/2, end_per_group/2, + suite/0, all/0, groups/0]). + +-export([tpcb_conflict_ramcopies/1, tpcb_conflict_disk_only_copies/1]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% suite() -> [{ct_hooks,[{ts_install_cth,[{nodenames,2}]}]}]. diff --git a/lib/mnesia/test/mnesia_consistency_test.erl b/lib/mnesia/test/mnesia_consistency_test.erl index 2fe1bd34e6..7a2678cee3 100644 --- a/lib/mnesia/test/mnesia_consistency_test.erl +++ b/lib/mnesia/test/mnesia_consistency_test.erl @@ -21,7 +21,78 @@ %% -module(mnesia_consistency_test). -author('[email protected]'). --compile([export_all]). + +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([consistency_after_change_table_copy_type/1, + consistency_after_rename_of_node/1, + consistency_after_restart_1_ram/1, + consistency_after_restart_1_disc/1, + consistency_after_restart_1_disc_only/1, + consistency_after_restart_2_ram/1, + consistency_after_restart_2_disc/1, + consistency_after_restart_2_disc_only/1, + consistency_after_dump_tables_1_ram/1, + consistency_after_dump_tables_2_ram/1, + consistency_after_add_replica_2_ram/1, + consistency_after_add_replica_2_disc/1, + consistency_after_add_replica_2_disc_only/1, + consistency_after_add_replica_3_ram/1, + consistency_after_add_replica_3_disc/1, + consistency_after_add_replica_3_disc_only/1, + consistency_after_del_replica_2_ram/1, + consistency_after_del_replica_2_disc/1, + consistency_after_del_replica_2_disc_only/1, + consistency_after_del_replica_3_ram/1, + consistency_after_del_replica_3_disc/1, + consistency_after_del_replica_3_disc_only/1, + consistency_after_move_replica_2_ram/1, + consistency_after_move_replica_2_disc/1, + consistency_after_move_replica_2_disc_only/1, + consistency_after_move_replica_3_ram/1, + consistency_after_move_replica_3_disc/1, + consistency_after_move_replica_3_disc_only/1, + consistency_after_transform_table_ram/1, + consistency_after_transform_table_disc/1, + consistency_after_transform_table_disc_only/1, + consistency_after_fallback_2_ram/1, + consistency_after_fallback_2_disc/1, + consistency_after_fallback_2_disc_only/1, + consistency_after_fallback_3_ram/1, + consistency_after_fallback_3_disc/1, + consistency_after_fallback_3_disc_only/1, + consistency_after_restore_clear_ram/1, + consistency_after_restore_clear_disc/1, + consistency_after_restore_clear_disc_only/1, + consistency_after_restore_recreate_ram/1, + consistency_after_restore_recreate_disc/1, + consistency_after_restore_recreate_disc_only/1, + updates_during_checkpoint_activation_1_ram/1, + updates_during_checkpoint_activation_1_disc/1, + updates_during_checkpoint_activation_1_disc_only/1, + updates_during_checkpoint_activation_2_ram/1, + updates_during_checkpoint_activation_2_disc/1, + updates_during_checkpoint_activation_2_disc_only/1, + updates_during_checkpoint_activation_3_ram/1, + updates_during_checkpoint_activation_3_disc/1, + updates_during_checkpoint_activation_3_disc_only/1, + updates_during_checkpoint_iteration_2_ram/1, + updates_during_checkpoint_iteration_2_disc/1, + updates_during_checkpoint_iteration_2_disc_only/1, + load_table_with_activated_checkpoint_ram/1, + load_table_with_activated_checkpoint_disc/1, + load_table_with_activated_checkpoint_disc_only/1, + add_table_copy_to_table_checkpoint_ram/1, + add_table_copy_to_table_checkpoint_disc/1, + add_table_copy_to_table_checkpoint_disc_only/1, + inst_fallback_process_dies/1, fatal_when_inconsistency/1, + after_delete/1,cause_switch_before/1, cause_switch_after/1, + cause_abort_before/1, cause_abort_after/1, + change_schema_before/1, change_schema_after/1]). + +-export([change_tab/3]). -include("mnesia_test_lib.hrl"). diff --git a/lib/mnesia/test/mnesia_cost.erl b/lib/mnesia/test/mnesia_cost.erl index a3fc8dfe20..4d0dd7b0ee 100644 --- a/lib/mnesia/test/mnesia_cost.erl +++ b/lib/mnesia/test/mnesia_cost.erl @@ -20,7 +20,7 @@ %% -module(mnesia_cost). --compile(export_all). +-export([go/0, go/1]). %% This code exercises the mnesia system and produces a bunch %% of measurements on what various things cost @@ -156,64 +156,3 @@ do_dirty(I, F) when I /= 0 -> F(), do_dirty(I-1, F); do_dirty(_,_) -> ok. - - - -table_load([N1,N2| _ ] = Ns) -> - Nodes = [N1,N2], - rpc:multicall(Ns, mnesia, lkill, []), - ok = mnesia:delete_schema(Ns), - ok = mnesia:create_schema(Nodes), - rpc:multicall(Nodes, mnesia, start, []), - TabDef = [{disc_copies,[N1]},{ram_copies,[N2]}, - {attributes,record_info(fields,item)},{record_name,item}], - Tabs = [list_to_atom("tab" ++ integer_to_list(I)) || I <- lists:seq(1,400)], - - [mnesia:create_table(Tab,TabDef) || Tab <- Tabs], - -%% InitTab = fun(Tab) -> -%% mnesia:write_lock_table(Tab), -%% InitRec = fun(Key) -> mnesia:write(Tab,#item{a=Key},write) end, -%% lists:foreach(InitRec, lists:seq(1,100)) -%% end, -%% -%% {Time,{atomic,ok}} = timer:tc(mnesia,transaction, [fun() ->lists:foreach(InitTab, Tabs) end]), - mnesia:dump_log(), -%% io:format("Init took ~p msec ~n", [Time/1000]), - rpc:call(N2, mnesia, stop, []), timer:sleep(1000), - mnesia:stop(), timer:sleep(500), - %% Warmup - ok = mnesia:start([{no_table_loaders, 1}]), - timer:tc(mnesia, wait_for_tables, [Tabs, infinity]), - mnesia:dump_log(), - rpc:call(N2, mnesia, dump_log, []), - io:format("Initialized ~n",[]), - - mnesia:stop(), timer:sleep(1000), - ok = mnesia:start([{no_table_loaders, 1}]), - {T1, ok} = timer:tc(mnesia, wait_for_tables, [Tabs, infinity]), - io:format("Loading from disc with 1 loader ~p msec~n",[T1/1000]), - mnesia:stop(), timer:sleep(1000), - ok = mnesia:start([{no_table_loaders, 4}]), - {T2, ok} = timer:tc(mnesia, wait_for_tables, [Tabs, infinity]), - io:format("Loading from disc with 4 loader ~p msec~n",[T2/1000]), - - %% Warmup - rpc:call(N2, ?MODULE, remote_load, [Tabs,4]), - io:format("Initialized ~n",[]), - - - T3 = rpc:call(N2, ?MODULE, remote_load, [Tabs,1]), - io:format("Loading from net with 1 loader ~p msec~n",[T3/1000]), - - T4 = rpc:call(N2, ?MODULE, remote_load, [Tabs,4]), - io:format("Loading from net with 4 loader ~p msec~n",[T4/1000]), - - ok. - -remote_load(Tabs,Loaders) -> - ok = mnesia:start([{no_table_loaders, Loaders}]), -%% io:format("~p ~n", [mnesia_controller:get_info(500)]), - {Time, ok} = timer:tc(mnesia, wait_for_tables, [Tabs, infinity]), - timer:sleep(1000), mnesia:stop(), timer:sleep(1000), - Time. diff --git a/lib/mnesia/test/mnesia_dirty_access_test.erl b/lib/mnesia/test/mnesia_dirty_access_test.erl index 6d970ac990..92124ebc65 100644 --- a/lib/mnesia/test/mnesia_dirty_access_test.erl +++ b/lib/mnesia/test/mnesia_dirty_access_test.erl @@ -21,9 +21,37 @@ %% -module(mnesia_dirty_access_test). -author('[email protected]'). --compile([export_all]). -include("mnesia_test_lib.hrl"). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([dirty_write_ram/1, dirty_write_disc/1, dirty_write_disc_only/1, dirty_write_xets/1, + dirty_read_ram/1, dirty_read_disc/1, dirty_read_disc_only/1, dirty_read_xets/1, + dirty_update_counter_ram/1, dirty_update_counter_disc/1, + dirty_update_counter_disc_only/1, dirty_update_counter_xets/1, + dirty_delete_ram/1, dirty_delete_disc/1, dirty_delete_disc_only/1, dirty_delete_xets/1, + dirty_delete_object_ram/1, dirty_delete_object_disc/1, + dirty_delete_object_disc_only/1, dirty_delete_object_xets/1, + dirty_match_object_ram/1, dirty_match_object_disc/1, + dirty_match_object_disc_only/1, dirty_match_object_xets/1, + dirty_index_match_object_ram/1, dirty_index_match_object_disc/1, + dirty_index_match_object_disc_only/1, dirty_index_match_object_xets/1, + dirty_index_read_ram/1, dirty_index_read_disc/1, + dirty_index_read_disc_only/1, dirty_index_read_xets/1, + dirty_index_update_set_ram/1, dirty_index_update_set_disc/1, + dirty_index_update_set_disc_only/1, dirty_index_update_set_xets/1, + dirty_index_update_bag_ram/1, dirty_index_update_bag_disc/1, + dirty_index_update_bag_disc_only/1, dirty_index_update_bag_xets/1, + dirty_iter_ram/1, dirty_iter_disc/1, dirty_iter_disc_only/1,dirty_iter_xets/1, + del_table_copy_1/1, del_table_copy_2/1, del_table_copy_3/1, + add_table_copy_1/1, add_table_copy_2/1, add_table_copy_3/1, + add_table_copy_4/1, move_table_copy_1/1, move_table_copy_2/1, + move_table_copy_3/1, move_table_copy_4/1]). + +-export([update_trans/3]). + init_per_testcase(Func, Conf) -> mnesia_test_lib:init_per_testcase(Func, Conf). diff --git a/lib/mnesia/test/mnesia_durability_test.erl b/lib/mnesia/test/mnesia_durability_test.erl index 97bc84a2d8..2fac5cac82 100644 --- a/lib/mnesia/test/mnesia_durability_test.erl +++ b/lib/mnesia/test/mnesia_durability_test.erl @@ -21,7 +21,33 @@ %% -module(mnesia_durability_test). -author('[email protected]'). --compile([export_all]). + +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([durability_of_disc_copies/1, + durability_of_disc_only_copies/1, + load_latest_data/1, load_local_contents_directly/1, + load_directly_when_all_are_ram_copiesA/1, + load_directly_when_all_are_ram_copiesB/1, + load_when_last_replica_becomes_available/1, + load_when_down_from_all_other_replica_nodes/1, + late_load_transforms_into_disc_load/1, + late_load_leads_to_hanging/1, + force_load_when_nobody_intents_to_load/1, + force_load_when_someone_has_decided_to_load/1, + force_load_when_someone_else_has_loaded/1, + force_load_when_we_has_loaded/1, + force_load_on_a_non_local_table/1, + force_load_when_the_table_does_not_exist/1, + late_load_all_ram_cs_ram_nodes1/1, + late_load_all_ram_cs_ram_nodes2/1, + master_nodes/1, starting_master_nodes/1, + master_on_non_local_tables/1, + remote_force_load_with_local_master_node/1, + dump_ram_copies/1, dump_disc_copies/1, dump_disc_only/1]). + -include("mnesia_test_lib.hrl"). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/lib/mnesia/test/mnesia_evil_backup.erl b/lib/mnesia/test/mnesia_evil_backup.erl index 0fa72c4305..45b11f2f3f 100644 --- a/lib/mnesia/test/mnesia_evil_backup.erl +++ b/lib/mnesia/test/mnesia_evil_backup.erl @@ -28,10 +28,23 @@ -module(mnesia_evil_backup). -author('[email protected]'). --compile(export_all). -include("mnesia_test_lib.hrl"). -%%-export([Function/Arity, ...]). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([backup/1, bad_backup/1, global_backup_checkpoint/1, + traverse_backup/1, + selective_backup_checkpoint/1, + incremental_backup_checkpoint/1, install_fallback/1, + uninstall_fallback/1, local_fallback/1, + sops_with_checkpoint/1, + restore_errors/1, restore_clear/1, restore_keep/1, + restore_recreate/1, restore_clear_ram/1 + ]). + +-export([check_tab/2]). init_per_testcase(Func, Conf) -> mnesia_test_lib:init_per_testcase(Func, Conf). diff --git a/lib/mnesia/test/mnesia_evil_coverage_test.erl b/lib/mnesia/test/mnesia_evil_coverage_test.erl index 6e34040bc4..074967469b 100644 --- a/lib/mnesia/test/mnesia_evil_coverage_test.erl +++ b/lib/mnesia/test/mnesia_evil_coverage_test.erl @@ -23,7 +23,32 @@ -author('[email protected]'). -include("mnesia_test_lib.hrl"). --compile([export_all]). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([system_info/1, table_info/1, error_description/1, + db_node_lifecycle/1, evil_delete_db_node/1, start_and_stop/1, + checkpoint/1, table_lifecycle/1, storage_options/1, + add_copy_conflict/1, add_copy_when_going_down/1, + replica_management/1, clear_table_during_load/1, + schema_availability/1, local_content/1, + replica_location/1, user_properties/1, unsupp_user_props/1, + sorted_ets/1, + change_table_access_mode/1, change_table_load_order/1, + set_master_nodes/1, offline_set_master_nodes/1, + dump_tables/1, dump_log/1, wait_for_tables/1, force_load_table/1, + snmp_open_table/1, snmp_close_table/1, snmp_get_next_index/1, + snmp_get_row/1, snmp_get_mnesia_key/1, snmp_update_counter/1, + snmp_order/1, subscribe_standard/1, subscribe_extended/1, + foldl/1, info/1, schema_0/1, schema_1/1, view_0/1, view_1/1, view_2/1, + lkill/1, kill/1, + record_name_dirty_access_ram/1, + record_name_dirty_access_disc/1, + record_name_dirty_access_disc_only/1, + record_name_dirty_access_xets/1]). + +-export([info_check/8]). -define(cleanup(N, Config), mnesia_test_lib:prepare_test_case([{reload_appls, [mnesia]}], diff --git a/lib/mnesia/test/mnesia_examples_test.erl b/lib/mnesia/test/mnesia_examples_test.erl index 808e62d9c2..f1259abf90 100644 --- a/lib/mnesia/test/mnesia_examples_test.erl +++ b/lib/mnesia/test/mnesia_examples_test.erl @@ -21,7 +21,14 @@ %% -module(mnesia_examples_test). -author('[email protected]'). --compile([export_all]). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). +-export([bup/1, company/1, meter/1, + replica_test/1, sticky_replica_test/1, dist_test/1, + conflict_test/1, frag_test/1, frag2_test/1, remote_test/1, + remote_frag2_test/1, opt_load/1]). + -include("mnesia_test_lib.hrl"). init_per_testcase(Func, Conf) -> diff --git a/lib/mnesia/test/mnesia_frag_test.erl b/lib/mnesia/test/mnesia_frag_test.erl index 9f2102beb2..7371792fda 100644 --- a/lib/mnesia/test/mnesia_frag_test.erl +++ b/lib/mnesia/test/mnesia_frag_test.erl @@ -23,7 +23,17 @@ -author('[email protected]'). -include("mnesia_test_lib.hrl"). --compile([export_all]). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + + +-export([nice_single/1, nice_multi/1, nice_access/1, iter_access/1, + consistency/1, evil_create/1, evil_delete/1, evil_change/1, evil_combine/1, + evil_loop/1, evil_delete_db_node/1]). + + +-export([frag_dist/1]). init_per_testcase(Func, Conf) -> mnesia_test_lib:init_per_testcase(Func, Conf). @@ -845,16 +855,7 @@ frag_rec_dist(Tab) -> Fun = fun() -> mnesia:table_info(Tab, frag_size) end, [Size || {_, Size} <- mnesia:activity(sync_dirty, Fun, mnesia_frag)]. -table_size(Tab) -> - Node = mnesia:table_info(Tab, where_to_read), - rpc:call(Node, mnesia, table_info, [Tab, size]). - sort_res(List) when is_list(List) -> lists:sort(List); sort_res(Else) -> Else. - -rev_res(List) when is_list(List) -> - lists:reverse(List); -rev_res(Else) -> - Else. diff --git a/lib/mnesia/test/mnesia_install_test.erl b/lib/mnesia/test/mnesia_install_test.erl index 103f85b3d6..3f67396eb0 100644 --- a/lib/mnesia/test/mnesia_install_test.erl +++ b/lib/mnesia/test/mnesia_install_test.erl @@ -21,8 +21,13 @@ %% -module(mnesia_install_test). -author('[email protected]'). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([silly_durability/1, silly_move/1, silly_upgrade/1, conflict/1, dist/1, + silly/0, silly2/1]). --compile([export_all]). -include("mnesia_test_lib.hrl"). init_per_testcase(Func, Conf) -> diff --git a/lib/mnesia/test/mnesia_isolation_test.erl b/lib/mnesia/test/mnesia_isolation_test.erl index 63940ec05c..1c3ea5ec92 100644 --- a/lib/mnesia/test/mnesia_isolation_test.erl +++ b/lib/mnesia/test/mnesia_isolation_test.erl @@ -22,7 +22,36 @@ -module(mnesia_isolation_test). -author('[email protected]'). --compile([export_all]). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([no_conflict/1, simple_queue_conflict/1, + advanced_queue_conflict/1, simple_deadlock_conflict/1, + advanced_deadlock_conflict/1, schema_deadlock/1, lock_burst/1, + nasty/1, basic_sticky_functionality/1, + unbound1/1, unbound2/1, + create_table/1, delete_table/1, move_table_copy/1, + add_table_index/1, del_table_index/1, transform_table/1, + snmp_open_table/1, snmp_close_table/1, + change_table_copy_type/1, change_table_access/1, + add_table_copy/1, del_table_copy/1, dump_tables/1, + del_table_copy_1/1, del_table_copy_2/1, del_table_copy_3/1, + add_table_copy_1/1, add_table_copy_2/1, add_table_copy_3/1, + add_table_copy_4/1, move_table_copy_1/1, move_table_copy_2/1, + move_table_copy_3/1, move_table_copy_4/1, + dirty_updates_visible_direct/1, + dirty_reads_regardless_of_trans/1, + trans_update_invisibible_outside_trans/1, + trans_update_visible_inside_trans/1, write_shadows/1, + delete_shadows/1, write_delete_shadows_bag/1, + write_delete_shadows_bag2/1, + shadow_search/1, snmp_shadows/1, + rr_kill_copy/1, foldl/1, first_next/1]). + +-export([do_fun/4, burst_counter/3, burst_incr/2, get_held/0, get_info/1, + get_sticky/0, op/4, update_own/3, update_shared/3]). + -include("mnesia_test_lib.hrl"). init_per_testcase(Func, Conf) -> @@ -668,16 +697,6 @@ unbound2(Config) when is_list(Config) -> {B, {atomic, [{ul,{key,{17,42}},val}]}}]), ok. -receiver() -> - receive - {_Pid, begin_trans} -> - receiver(); - Else -> - Else - after - 10000 -> - timeout - end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/lib/mnesia/test/mnesia_majority_test.erl b/lib/mnesia/test/mnesia_majority_test.erl index 9811de6ae7..eb82617b60 100644 --- a/lib/mnesia/test/mnesia_majority_test.erl +++ b/lib/mnesia/test/mnesia_majority_test.erl @@ -21,7 +21,13 @@ %% -module(mnesia_majority_test). -author('[email protected]'). --compile(export_all). +-export([init_per_testcase/2, end_per_testcase/2, + all/0]). + +-export([write/1, wread/1, delete/1, clear_table/1, frag/1, + change_majority/1, frag_change_majority/1 + ]). + -include("mnesia_test_lib.hrl"). init_per_testcase(Func, Conf) -> diff --git a/lib/mnesia/test/mnesia_measure_test.erl b/lib/mnesia/test/mnesia_measure_test.erl index ad71fafecb..4e63eaee22 100644 --- a/lib/mnesia/test/mnesia_measure_test.erl +++ b/lib/mnesia/test/mnesia_measure_test.erl @@ -21,7 +21,15 @@ %% -module(mnesia_measure_test). -author('[email protected]'). --compile([export_all]). + +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([cost/1, dbn_meters/1, + ram_tpcb/1, disc_tpcb/1, disc_only_tpcb/1, + ram_meter/1, disc_meter/1, disc_only_meter/1]). + -include("mnesia_test_lib.hrl"). @@ -39,41 +47,12 @@ end_per_testcase(Func, Conf) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% all() -> - [{group, prediction}, {group, consumption}, - {group, scalability}, {group, benchmarks}]. + [{group, benchmarks}]. groups() -> - [{prediction, [], - [reader_disturbed_by_node_down, - writer_disturbed_by_node_down, - reader_disturbed_by_node_up, - writer_disturbed_by_node_up, - reader_disturbed_by_schema_ops, - writer_disturbed_by_schema_ops, - reader_disturbed_by_checkpoint, - writer_disturbed_by_checkpoint, - reader_disturbed_by_dump_log, - writer_disturbed_by_dump_log, - reader_disturbed_by_backup, writer_disturbed_by_backup, - reader_disturbed_by_restore, - writer_disturbed_by_restore, {group, fairness}]}, - {fairness, [], - [reader_competing_with_reader, - reader_competing_with_writer, - writer_competing_with_reader, - writer_competing_with_writer]}, - {consumption, [], - [measure_resource_consumption, - determine_resource_leakage]}, - {scalability, [], - [determine_system_limits, performance_at_min_config, - performance_at_max_config, performance_at_full_load, - resource_consumption_at_min_config, - resource_consumption_at_max_config, - resource_consumption_at_full_load]}, - {benchmarks, [], + [{benchmarks, [], [{group, meter}, cost, dbn_meters, - measure_all_api_functions, {group, tpcb}]}, + {group, tpcb}]}, {tpcb, [], [ram_tpcb, disc_tpcb, disc_only_tpcb]}, {meter, [], [ram_meter, disc_meter, disc_only_meter]}]. diff --git a/lib/mnesia/test/mnesia_nice_coverage_test.erl b/lib/mnesia/test/mnesia_nice_coverage_test.erl index ffbe36e48d..7c96d6e6a0 100644 --- a/lib/mnesia/test/mnesia_nice_coverage_test.erl +++ b/lib/mnesia/test/mnesia_nice_coverage_test.erl @@ -21,7 +21,13 @@ %% -module(mnesia_nice_coverage_test). -author('[email protected]'). --compile([export_all]). + +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([nice/1]). + -include("mnesia_test_lib.hrl"). -record(nice_tab, {key, val}). diff --git a/lib/mnesia/test/mnesia_qlc_test.erl b/lib/mnesia/test/mnesia_qlc_test.erl index 5067e86521..262a6b4abc 100644 --- a/lib/mnesia/test/mnesia_qlc_test.erl +++ b/lib/mnesia/test/mnesia_qlc_test.erl @@ -21,9 +21,18 @@ %% -module(mnesia_qlc_test). --compile(export_all). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([frag/1, info/1, mnesia_down/1, + dirty_nice_ram_copies/1, dirty_nice_disc_copies/1, + dirty_nice_disc_only_copies/1, + trans_nice_ram_copies/1, trans_nice_disc_copies/1, + trans_nice_disc_only_copies/1, atomic_eval/1, + nested_qlc/1 + ]). --export([all/0,groups/0,init_per_group/2,end_per_group/2]). -include("mnesia_test_lib.hrl"). -include_lib("stdlib/include/qlc.hrl"). diff --git a/lib/mnesia/test/mnesia_recovery_test.erl b/lib/mnesia/test/mnesia_recovery_test.erl index 130b87346f..82d6e6ac6a 100644 --- a/lib/mnesia/test/mnesia_recovery_test.erl +++ b/lib/mnesia/test/mnesia_recovery_test.erl @@ -21,7 +21,80 @@ %% -module(mnesia_recovery_test). -author('[email protected]'). --compile([export_all]). + +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([coord_dies/1, after_full_disc_partition/1, + disc_less/1, garb_decision/1, + system_upgrade/1, + delete_during_start/1, + no_master_2/1, no_master_3/1, one_master_2/1, one_master_3/1, + two_master_2/1, two_master_3/1, all_master_2/1, + all_master_3/1, + dirty_read_during_down/1, trans_read_during_down/1, + mnesia_down_during_startup_disk_ram/1, + mnesia_down_during_startup_init_ram/1, + mnesia_down_during_startup_init_disc/1, + mnesia_down_during_startup_init_disc_only/1, + mnesia_down_during_startup_tm_ram/1, + mnesia_down_during_startup_tm_disc/1, + mnesia_down_during_startup_tm_disc_only/1, + with_checkpoint_same/1, with_checkpoint_other/1, + explicit_stop_during_snmp/1, + sym_trans_before_commit_kill_coord_node/1, + sym_trans_before_commit_kill_coord_pid/1, + sym_trans_before_commit_kill_part_after_ask/1, + sym_trans_before_commit_kill_part_before_ask/1, + sym_trans_after_commit_kill_coord_node/1, + sym_trans_after_commit_kill_coord_pid/1, + sym_trans_after_commit_kill_part_after_ask/1, + sym_trans_after_commit_kill_part_do_commit_pre/1, + sym_trans_after_commit_kill_part_do_commit_post/1, + sync_dirty_pre_kill_part/1, + sync_dirty_pre_kill_coord_node/1, + sync_dirty_pre_kill_coord_pid/1, + sync_dirty_post_kill_part/1, + sync_dirty_post_kill_coord_node/1, + sync_dirty_post_kill_coord_pid/1, + async_dirty_pre_kill_part/1, + async_dirty_pre_kill_coord_node/1, + async_dirty_pre_kill_coord_pid/1, + async_dirty_post_kill_part/1, + async_dirty_post_kill_coord_node/1, + async_dirty_post_kill_coord_pid/1, + asymtrans_part_ask/1, + asymtrans_part_commit_vote/1, + asymtrans_part_pre_commit/1, + asymtrans_part_log_commit/1, + asymtrans_part_do_commit/1, + asymtrans_coord_got_votes/1, + asymtrans_coord_pid_got_votes/1, + asymtrans_coord_log_commit_rec/1, + asymtrans_coord_pid_log_commit_rec/1, + asymtrans_coord_log_commit_dec/1, + asymtrans_coord_pid_log_commit_dec/1, + asymtrans_coord_rec_acc_pre_commit_log_commit/1, + asymtrans_coord_pid_rec_acc_pre_commit_log_commit/1, + asymtrans_coord_rec_acc_pre_commit_done_commit/1, + asymtrans_coord_pid_rec_acc_pre_commit_done_commit/1, + after_corrupt_files_decision_log_head/1, + after_corrupt_files_decision_log_tail/1, + after_corrupt_files_latest_log_head/1, + after_corrupt_files_latest_log_tail/1, + after_corrupt_files_table_dat_head/1, + after_corrupt_files_table_dat_tail/1, + after_corrupt_files_schema_dat_head/1, + after_corrupt_files_schema_dat_tail/1]). + +-export([reader/2, check/0, get_all_retainers/1, + verify_data/2, verify_where2read/1, + do_trans_loop/2, + start_stop/3, do_sym_trans/2, do_sync_dirty/2, do_async_dirty/2, + do_asym_trans/2, garb_handler/1, mymnesia_start/1 + ]). + -include("mnesia_test_lib.hrl"). -include_lib("kernel/include/file.hrl"). diff --git a/lib/mnesia/test/mnesia_registry_test.erl b/lib/mnesia/test/mnesia_registry_test.erl index 3df37a2c8c..08157f1be3 100644 --- a/lib/mnesia/test/mnesia_registry_test.erl +++ b/lib/mnesia/test/mnesia_registry_test.erl @@ -21,7 +21,12 @@ %% -module(mnesia_registry_test). -author('[email protected]'). --compile([export_all]). +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([good_dump/1, bad_dump/1, dump_registry/2, restore_registry/2]). + -include("mnesia_test_lib.hrl"). init_per_testcase(Func, Conf) -> diff --git a/lib/mnesia/test/mnesia_schema_recovery_test.erl b/lib/mnesia/test/mnesia_schema_recovery_test.erl index ca2dd74b34..5e7627ca47 100644 --- a/lib/mnesia/test/mnesia_schema_recovery_test.erl +++ b/lib/mnesia/test/mnesia_schema_recovery_test.erl @@ -21,7 +21,79 @@ %% -module(mnesia_schema_recovery_test). -author('[email protected]'). --compile([export_all]). + +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([interrupted_before_create_ram/1, + interrupted_before_create_disc/1, + interrupted_before_create_do/1, + interrupted_before_create_nostore/1, + interrupted_before_delete_ram/1, + interrupted_before_delete_disc/1, + interrupted_before_delete_do/1, + interrupted_before_add_ram/1, + interrupted_before_add_disc/1, + interrupted_before_add_do/1, + interrupted_before_add_kill_copier/1, + interrupted_before_move_ram/1, + interrupted_before_move_disc/1, + interrupted_before_move_do/1, + interrupted_before_move_kill_copier/1, + interrupted_before_delcopy_ram/1, + interrupted_before_delcopy_disc/1, + interrupted_before_delcopy_do/1, + interrupted_before_delcopy_kill_copier/1, + interrupted_before_addindex_ram/1, + interrupted_before_addindex_disc/1, + interrupted_before_addindex_do/1, + interrupted_before_delindex_ram/1, + interrupted_before_delindex_disc/1, + interrupted_before_delindex_do/1, + interrupted_before_change_type_ram2disc/1, + interrupted_before_change_type_ram2do/1, + interrupted_before_change_type_disc2ram/1, + interrupted_before_change_type_disc2do/1, + interrupted_before_change_type_do2ram/1, + interrupted_before_change_type_do2disc/1, + interrupted_before_change_type_other_node/1, + interrupted_before_change_schema_type/1, + interrupted_after_create_ram/1, + interrupted_after_create_disc/1, + interrupted_after_create_do/1, + interrupted_after_create_nostore/1, + interrupted_after_delete_ram/1, + interrupted_after_delete_disc/1, + interrupted_after_delete_do/1, + interrupted_after_add_ram/1, + interrupted_after_add_disc/1, + interrupted_after_add_do/1, + interrupted_after_add_kill_copier/1, + interrupted_after_move_ram/1, + interrupted_after_move_disc/1, + interrupted_after_move_do/1, + interrupted_after_move_kill_copier/1, + interrupted_after_delcopy_ram/1, + interrupted_after_delcopy_disc/1, + interrupted_after_delcopy_do/1, + interrupted_after_delcopy_kill_copier/1, + interrupted_after_addindex_ram/1, + interrupted_after_addindex_disc/1, + interrupted_after_addindex_do/1, + interrupted_after_delindex_ram/1, + interrupted_after_delindex_disc/1, + interrupted_after_delindex_do/1, + interrupted_after_change_type_ram2disc/1, + interrupted_after_change_type_ram2do/1, + interrupted_after_change_type_disc2ram/1, + interrupted_after_change_type_disc2do/1, + interrupted_after_change_type_do2ram/1, + interrupted_after_change_type_do2disc/1, + interrupted_after_change_type_other_node/1, + interrupted_after_change_schema_type/1]). + + -include("mnesia_test_lib.hrl"). init_per_testcase(Func, Conf) -> diff --git a/lib/mnesia/test/mnesia_trans_access_test.erl b/lib/mnesia/test/mnesia_trans_access_test.erl index 4ed73ea859..c00a1ed51f 100644 --- a/lib/mnesia/test/mnesia_trans_access_test.erl +++ b/lib/mnesia/test/mnesia_trans_access_test.erl @@ -21,7 +21,28 @@ %% -module(mnesia_trans_access_test). -author('[email protected]'). --compile([export_all]). + +-export([init_per_testcase/2, end_per_testcase/2, + init_per_group/2, end_per_group/2, + all/0, groups/0]). + +-export([write/1, read/1, wread/1, delete/1, delete_object/1, + match_object/1, select/1, select14/1, all_keys/1, transaction/1, + basic_nested/1, mix_of_nested_activities/1, + nested_trans_both_ok/1, nested_trans_child_dies/1, + nested_trans_parent_dies/1, nested_trans_both_dies/1, + index_match_object/1, index_read/1,index_write/1, + index_update_set/1, index_update_bag/1, + add_table_index_ram/1, add_table_index_disc/1, + add_table_index_disc_only/1, create_live_table_index_ram/1, + create_live_table_index_disc/1, + create_live_table_index_disc_only/1, del_table_index_ram/1, + del_table_index_disc/1, del_table_index_disc_only/1, + idx_schema_changes_ram/1, idx_schema_changes_disc/1, + idx_schema_changes_disc_only/1]). + +-export([do_nested/1]). + -include("mnesia_test_lib.hrl"). init_per_testcase(Func, Conf) -> diff --git a/lib/reltool/test/reltool_app_SUITE.erl b/lib/reltool/test/reltool_app_SUITE.erl index 18c74bea6c..a51ee8875a 100644 --- a/lib/reltool/test/reltool_app_SUITE.erl +++ b/lib/reltool/test/reltool_app_SUITE.erl @@ -24,7 +24,7 @@ %%---------------------------------------------------------------------- -module(reltool_app_SUITE). --compile(export_all). +-compile([export_all, nowarn_export_all]). -include("reltool_test_lib.hrl"). -include_lib("common_test/include/ct.hrl"). diff --git a/lib/reltool/test/reltool_manual_gui_SUITE.erl b/lib/reltool/test/reltool_manual_gui_SUITE.erl index eebe2303fb..44da4ffd2c 100644 --- a/lib/reltool/test/reltool_manual_gui_SUITE.erl +++ b/lib/reltool/test/reltool_manual_gui_SUITE.erl @@ -23,7 +23,7 @@ init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). --compile(export_all). +-export([config/1, depgraphs/1]). -include_lib("common_test/include/ct.hrl"). -include("reltool_test_lib.hrl"). diff --git a/lib/reltool/test/reltool_server_SUITE.erl b/lib/reltool/test/reltool_server_SUITE.erl index e8dfea94da..49efe5aeda 100644 --- a/lib/reltool/test/reltool_server_SUITE.erl +++ b/lib/reltool/test/reltool_server_SUITE.erl @@ -19,11 +19,7 @@ -module(reltool_server_SUITE). --export([all/0, suite/0,groups/0,init_per_group/2,end_per_group/2, - init_per_suite/1, end_per_suite/1, - init_per_testcase/2, end_per_testcase/2]). - --compile(export_all). +-compile([export_all, nowarn_export_all]). -include_lib("reltool/src/reltool.hrl"). -include("reltool_test_lib.hrl"). diff --git a/lib/reltool/test/reltool_test_lib.erl b/lib/reltool/test/reltool_test_lib.erl index 6cc2d259fb..53aeb8c08c 100644 --- a/lib/reltool/test/reltool_test_lib.erl +++ b/lib/reltool/test/reltool_test_lib.erl @@ -18,7 +18,7 @@ %% %CopyrightEnd% -module(reltool_test_lib). --compile(export_all). +-compile([export_all, nowarn_export_all]). -include("reltool_test_lib.hrl"). -define(timeout, 20). % minutes diff --git a/lib/reltool/test/reltool_wx_SUITE.erl b/lib/reltool/test/reltool_wx_SUITE.erl index ac820db21c..19707894ae 100644 --- a/lib/reltool/test/reltool_wx_SUITE.erl +++ b/lib/reltool/test/reltool_wx_SUITE.erl @@ -23,7 +23,7 @@ init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). --compile(export_all). +-export([start_all_windows/1, check_no_win_crash/0, wait_terminate/1]). -include("reltool_test_lib.hrl"). diff --git a/lib/reltool/test/rtt.erl b/lib/reltool/test/rtt.erl index 173ffc5166..d9e8e5520d 100644 --- a/lib/reltool/test/rtt.erl +++ b/lib/reltool/test/rtt.erl @@ -18,7 +18,7 @@ %% %CopyrightEnd% -module(rtt). --compile(export_all). +-compile([export_all, nowarn_export_all]). %% Modules or suites can be shortcuts, for example server expands to reltool_server_SUITE. %% diff --git a/lib/snmp/src/app/snmp.appup.src b/lib/snmp/src/app/snmp.appup.src index db09ec3dc5..bde637744c 100644 --- a/lib/snmp/src/app/snmp.appup.src +++ b/lib/snmp/src/app/snmp.appup.src @@ -8,8 +8,17 @@ %% {update, snmpa_local_db, soft, soft_purge, soft_purge, []} %% {add_module, snmpm_net_if_mt} [ + {<<"5\\.2\\.6">>, + [{load_module, snmpc, soft_purge, soft_purge, []}, + {load_module, snmpc_lib, soft_purge, soft_purge, []}]}, + {<<"5\\.2\\.5">>, + [{load_module, snmpc, soft_purge, soft_purge, []}, + {load_module, snmpc_lib, soft_purge, soft_purge, []}, + {load_module, snmp_generic, soft_purge, soft_purge, []}]}, {<<"5\\.2\\.4">>, - [{load_module, snmp, soft_purge, soft_purge, []}, + [{load_module, snmpc, soft_purge, soft_purge, []}, + {load_module, snmp_generic, soft_purge, soft_purge, []}, + {load_module, snmp, soft_purge, soft_purge, []}, {load_module, snmpc_lib, soft_purge, soft_purge, []}, {load_module, snmpc_mib_gram, soft_purge, soft_purge, []}]}, {<<"5\\..*">>, [{restart_application, snmp}]}, @@ -21,8 +30,17 @@ %% {remove, {snmpm_net_if_mt, soft_purge, soft_purge}} [ + {<<"5\\.2\\.6">>, + [{load_module, snmpc, soft_purge, soft_purge, []}, + {load_module, snmpc_lib, soft_purge, soft_purge, []}]}, + {<<"5\\.2\\.5">>, + [{load_module, snmpc, soft_purge, soft_purge, []}, + {load_module, snmpc_lib, soft_purge, soft_purge, []}, + {load_module, snmp_generic, soft_purge, soft_purge, []}]}, {<<"5\\.2\\.4">>, - [{load_module, snmp, soft_purge, soft_purge, []}, + [{load_module, snmpc, soft_purge, soft_purge, []}, + {load_module, snmp_generic, soft_purge, soft_purge, []}, + {load_module, snmp, soft_purge, soft_purge, []}, {load_module, snmpc_lib, soft_purge, soft_purge, []}, {load_module, snmpc_mib_gram, soft_purge, soft_purge, []}]}, {<<"5\\..*">>, [{restart_application, snmp}]}, diff --git a/lib/snmp/src/compile/snmpc.erl b/lib/snmp/src/compile/snmpc.erl index 416353508e..4416626a4c 100644 --- a/lib/snmp/src/compile/snmpc.erl +++ b/lib/snmp/src/compile/snmpc.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2016. All Rights Reserved. +%% Copyright Ericsson AB 1997-2017. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -455,7 +455,8 @@ compile_parsed_data(#pdata{mib_name = MibName, Deprecated = get_deprecated(Opts), RelChk = get_relaxed_row_name_assign_check(Opts), Data = #dldata{deprecated = Deprecated, - relaxed_row_name_assign_check = RelChk}, + relaxed_row_name_assign_check = RelChk}, + put(augmentations, false), definitions_loop(Definitions, Data), MibName. @@ -1211,7 +1212,39 @@ definitions_loop([{Obj,Line}|T], Data) -> definitions_loop([], _Data) -> ?vlog("defloop -> done", []), - ok. + case get(augmentations) of + true -> + CData = get(cdata), + put(cdata, CData#cdata{mes = augmentations(CData#cdata.mes)}), + ok; + false -> + ok + end. + +augmentations( + [#me{ + aliasname = AliasName, + assocList = + [{table_info, + #table_info{ + index_types = + {augments, SrcTableEntry, Line}} = TableInfo}|Ref]} = Me + |Mes]) -> + ?vlog("augmentations(~w) ->" + "~n NameOfTable: ~p" + "~n IndexingInfo: ~p" + "~n Sline: ~p", + [?LINE, AliasName, {augments, SrcTableEntry}, Line]), + NewTableInfo = snmpc_lib:fix_table_info_augmentation(TableInfo), + [Me#me{assocList = [{table_info,NewTableInfo}|Ref]} + |augmentations(Mes)]; +augmentations([Me | Mes]) -> + [Me|augmentations(Mes)]; +augmentations([]) -> + ?vlog("augmentations -> done", []), + []. + + safe_elem(N,T) -> case catch(element(N,T)) of diff --git a/lib/snmp/src/compile/snmpc_lib.erl b/lib/snmp/src/compile/snmpc_lib.erl index 33ddd78308..19a6bc8851 100644 --- a/lib/snmp/src/compile/snmpc_lib.erl +++ b/lib/snmp/src/compile/snmpc_lib.erl @@ -26,7 +26,7 @@ -export([test_father/4, make_ASN1type/1, import/1, makeInternalNode2/2, is_consistent/1, resolve_defval/1, make_variable_info/1, check_trap_name/3, make_table_info/5, get_final_mib/2, set_dir/2, - look_at/1, add_cdata/2, + fix_table_info_augmentation/1, look_at/1, add_cdata/2, check_object_group/4, check_notification_group/4, check_notification/3, register_oid/4, @@ -710,25 +710,34 @@ check_trap_name(EnterpriseName, Line, MEs) -> %% functions for tables. %%---------------------------------------------------------------------- +fix_table_info_augmentation( + #table_info{index_types = {augments, SrcTableEntry, Line}} = TableInfo) -> + MEs = (get(cdata))#cdata.mes, + Aug = + case lookup(SrcTableEntry, MEs) of + false -> + print_error( + "Cannot AUGMENT the non-existing table entry ~p", + [SrcTableEntry], Line), + {augments, error}; + {value, ME} -> + {augments, + {SrcTableEntry, translate_type(ME#me.asn1_type)}} + end, + TableInfo#table_info{index_types = Aug}. + + make_table_info(Line, TableName, {augments, SrcTableEntry}, _, ColumnMEs) -> ColMEs = lists:keysort(#me.oid, ColumnMEs), - Nbr_of_Cols = length(ColMEs), - MEs = ColMEs ++ (get(cdata))#cdata.mes, - Aug = case lookup(SrcTableEntry, MEs) of - false -> - print_error("Cannot AUGMENT the non-existing table entry ~p", - [SrcTableEntry], Line), - {augments, error}; - {value, ME} -> - {augments, {SrcTableEntry, translate_type(ME#me.asn1_type)}} - end, - FirstNonIdxCol = augments_first_non_index_column(ColMEs), + Nbr_of_Cols = length(ColMEs), + put(augmentations, true), + FirstNonIdxCol = augments_first_non_index_column(ColMEs), NoAccs = list_not_accessible(FirstNonIdxCol, ColMEs), FirstAcc = first_accessible(TableName, ColMEs), #table_info{nbr_of_cols = Nbr_of_Cols, - first_accessible = FirstAcc, - not_accessible = NoAccs, - index_types = Aug}; + first_accessible = FirstAcc, + not_accessible = NoAccs, + index_types = {augments, SrcTableEntry, Line}}; make_table_info(Line, TableName, {indexes, []}, _, _ColumnMEs) -> print_error("Table ~w lacks indexes.", [TableName],Line), #table_info{}; diff --git a/lib/snmp/test/snmp_compiler_test.erl b/lib/snmp/test/snmp_compiler_test.erl index 9b3c2bfd2c..2b6bba4ee6 100644 --- a/lib/snmp/test/snmp_compiler_test.erl +++ b/lib/snmp/test/snmp_compiler_test.erl @@ -57,8 +57,8 @@ otp_8595/1, otp_10799/1, otp_10808/1, - otp_14145/1 - + otp_14145/1, + otp_13014/1 ]). %%---------------------------------------------------------------------- @@ -137,7 +137,8 @@ all() -> groups() -> [{tickets, [], - [otp_6150, otp_8574, otp_8595, otp_10799, otp_10808, otp_14145]}]. + [otp_6150, otp_8574, otp_8595, otp_10799, otp_10808, otp_14145, + otp_13014]}]. init_per_group(_GroupName, Config) -> Config. @@ -436,7 +437,7 @@ otp_10808(Config) when is_list(Config) -> otp_14145(suite) -> []; otp_14145(Config) when is_list(Config) -> - put(tname, otp10808), + put(tname, otp14145), p("starting with Config: ~p~n", [Config]), Dir = ?config(case_top_dir, Config), @@ -457,6 +458,40 @@ otp_14145(Config) when is_list(Config) -> %%====================================================================== +otp_13014(suite) -> + []; +otp_13014(Config) when is_list(Config) -> + put(tname, otp13014), + p("starting with Config: ~p~n", [Config]), + + Dir = ?config(case_top_dir, Config), + MibDir = ?config(mib_dir, Config), + MibName = "Test-LLDP-MIB", + MibFile = join(MibDir, MibName++".mib"), + ?line {ok, MibBin} = + snmpc:compile(MibFile, [{outdir, Dir}, + {verbosity, log}, + {group_check, false}, + module_compliance]), + p("Mib: ~n~p~n", [MibBin]), + #mib{mes = MEs} = read_mib(MibBin), + Oid = [1,0,8802,1,1,2,1,1,7], + #me{ + entrytype = table, + aliasname = lldpConfigManAddrTable, + assocList = [{table_info,TableInfo}]} = + lists:keyfind(Oid, #me.oid, MEs), + #table_info{ + nbr_of_cols = 1, + first_accessible = 1, + not_accessible = [], + index_types = {augments,{lldpLocManAddrEntry,undefined}}} = + TableInfo, + ok. + + +%%====================================================================== + augments_extra_info(suite) -> []; augments_extra_info(Config) when is_list(Config) -> diff --git a/lib/snmp/test/snmp_test_data/Test-LLDP-MIB.mib b/lib/snmp/test/snmp_test_data/Test-LLDP-MIB.mib new file mode 100644 index 0000000000..40a9fc79e1 --- /dev/null +++ b/lib/snmp/test/snmp_test_data/Test-LLDP-MIB.mib @@ -0,0 +1,251 @@ +Test-LLDP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TimeStamp, TruthValue + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +t-lldpMIB MODULE-IDENTITY + LAST-UPDATED "200505060000Z" -- May 06, 2005 + ORGANIZATION "IEEE 802.1 Working Group" + CONTACT-INFO + " Contact: The Erlang/OTP team at Ericsson AB, Sweden + + WG-URL: http://grouper.ieee.org/groups/802/1/index.html + WG-EMail: [email protected] + + Contact: Paul Congdon + Postal: Hewlett-Packard Company + 8000 Foothills Blvd. + Roseville, CA 95747 + USA + Tel: +1-916-785-5753 + E-mail: [email protected]" + DESCRIPTION + "This is the ripped out bits and pieces of LLDP-MIB + that triggered a compilation problem for Erlang/OTP's + MIB compiler due to an AUGMENTS in lldpConfigManAddrEntry + refering to a not yet defined OBJECT-TYPE lldpLocManAddrEntry. + Rip and rewrite done 2017. + + Management Information Base module for LLDP configuration, + statistics, local system data and remote systems data + components. + + Copyright (C) IEEE (2005). This version of this MIB module + is published as subclause 12.1 of IEEE Std 802.1AB-2005; + see the standard itself for full legal notices." + REVISION "200505060000Z" -- May 06, 2005 + DESCRIPTION + "Published as part of IEEE Std 802.1AB-2005 initial version." + ::= { iso std(0) iso8802(8802) ieee802dot1(1) ieee802dot1mibs(1) 2 } + +--lldpNotifications OBJECT IDENTIFIER ::= { lldpMIB 0 } +lldpObjects OBJECT IDENTIFIER ::= { t-lldpMIB 1 } +lldpConformance OBJECT IDENTIFIER ::= { t-lldpMIB 2 } + +-- +-- LLDP MIB Objects +-- + +lldpConfiguration OBJECT IDENTIFIER ::= { lldpObjects 1 } +--lldpStatistics OBJECT IDENTIFIER ::= { lldpObjects 2 } +lldpLocalSystemData OBJECT IDENTIFIER ::= { lldpObjects 3 } +--lldpRemoteSystemsData OBJECT IDENTIFIER ::= { lldpObjects 4 } +--lldpExtensions OBJECT IDENTIFIER ::= { lldpObjects 5 } + + + +LldpPortList ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each octet within this value specifies a set of eight ports, + with the first octet specifying ports 1 through 8, the second + octet specifying ports 9 through 16, etc. Within each octet, + the most significant bit represents the lowest numbered port, + and the least significant bit represents the highest numbered + port. Thus, each port of the system is represented by a + single bit within the value of this object. If that bit has + a value of '1' then that port is included in the set of ports; + the port is not included if its bit has a value of '0'." + REFERENCE + "IETF RFC 2674 section 5" + SYNTAX OCTET STRING(SIZE(0..512)) + + + +-- +-- lldpManAddrConfigTxPortsTable : selection of management addresses +-- to be transmitted on a specified set +-- of ports. +-- + +lldpConfigManAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpConfigManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table that controls selection of LLDP management address + TLV instances to be transmitted on individual ports." + ::= { lldpConfiguration 7 } + +lldpConfigManAddrEntry OBJECT-TYPE + SYNTAX LldpConfigManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information that specifies the set + of ports (represented as a PortList) on which the local + system management address instance will be transmitted. + + This configuration object augments the lldpLocManAddrEntry, + therefore it is only present along with the management + address instance contained in the associated + lldpLocManAddrEntry entry. + + Each active lldpConfigManAddrEntry must be restored from + non-volatile and re-created (along with the corresponding + lldpLocManAddrEntry) after a re-initialization of the + management system." + AUGMENTS { lldpLocManAddrEntry } + ::= { lldpConfigManAddrTable 1 } + +LldpConfigManAddrEntry ::= SEQUENCE { + lldpConfigManAddrPortsTxEnable LldpPortList +} + +lldpConfigManAddrPortsTxEnable OBJECT-TYPE + SYNTAX LldpPortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A set of ports that are identified by a PortList, in which + each port is represented as a bit. The corresponding local + system management address instance will be transmitted on the + member ports of the lldpManAddrPortsTxEnable. + + The default value for lldpConfigManAddrPortsTxEnable object + is empty binary string, which means no ports are specified + for advertising indicated management address instance." + REFERENCE + "IEEE 802.1AB-2005 10.2.1.1" + DEFVAL { ''H } -- empty binary string + ::= { lldpConfigManAddrEntry 1 } + + +-- +-- lldpLocManAddrTable : Management addresses of the local system +-- + +lldpLocManAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpLocManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains management address information on the + local system known to this agent." + ::= { lldpLocalSystemData 8 } + +lldpLocManAddrEntry OBJECT-TYPE + SYNTAX LldpLocManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Management address information about a particular chassis + component. There may be multiple management addresses + configured on the system identified by a particular + lldpLocChassisId. Each management address should have + distinct 'management address type' (lldpLocManAddrSubtype) and + 'management address' (lldpLocManAddr.) + + Entries may be created and deleted in this table by the + agent." + INDEX { lldpLocManAddrIfId, + lldpLocManAddrLen } + ::= { lldpLocManAddrTable 1 } + +LldpLocManAddrEntry ::= SEQUENCE { + lldpLocManAddrIfId Integer32, + lldpLocManAddrLen Integer32, + lldpLocManAddrOID OBJECT IDENTIFIER +} + +lldpLocManAddrIfId OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The integer value used to identify the interface number + regarding the management address component associated with + the local system." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.6" + ::= { lldpLocManAddrEntry 1 } + +lldpLocManAddrLen OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total length of the management address subtype and the + management address fields in LLDPDUs transmitted by the + local LLDP agent. + + The management address length field is needed so that the + receiving systems that do not implement SNMP will not be + required to implement an iana family numbers/address length + equivalency table in order to decode the management adress." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.2" + ::= { lldpLocManAddrEntry 2 } + +lldpLocManAddrOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OID value used to identify the type of hardware component + or protocol entity associated with the management address + advertised by the local system agent." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.8" + ::= { lldpLocManAddrEntry 3 } + + +lldpGroups OBJECT IDENTIFIER ::= { lldpConformance 1 } + +lldpLocSysGroup OBJECT-GROUP + OBJECTS { + lldpLocManAddrIfId, + lldpLocManAddrLen, + lldpLocManAddrOID + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + Local System Information. + + This group is mandatory for agents which implement the LLDP + and have the capability of transmitting LLDP frames." + ::= { lldpGroups 6 } + +lldpConfigTxGroup OBJECT-GROUP + OBJECTS { + lldpConfigManAddrPortsTxEnable + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure the + LLDP implementation behavior. + + This group is mandatory for agents which implement the LLDP + and have the capability of transmitting LLDP frames." + ::= { lldpGroups 3 } + + +END diff --git a/lib/snmp/vsn.mk b/lib/snmp/vsn.mk index d41b1999cc..207f0084d8 100644 --- a/lib/snmp/vsn.mk +++ b/lib/snmp/vsn.mk @@ -19,6 +19,6 @@ # %CopyrightEnd% APPLICATION = snmp -SNMP_VSN = 5.2.6 +SNMP_VSN = 5.2.7 PRE_VSN = APP_VSN = "$(APPLICATION)-$(SNMP_VSN)$(PRE_VSN)" diff --git a/lib/stdlib/doc/src/rand.xml b/lib/stdlib/doc/src/rand.xml index a68fb7d55f..89fb858823 100644 --- a/lib/stdlib/doc/src/rand.xml +++ b/lib/stdlib/doc/src/rand.xml @@ -35,12 +35,19 @@ <module>rand</module> <modulesummary>Pseudo random number generation.</modulesummary> <description> - <p>This module provides a random number generator. The module contains - a number of algorithms. The uniform distribution algorithms use the - <url href="http://xorshift.di.unimi.it">scrambled Xorshift algorithms by - Sebastiano Vigna</url>. The normal distribution algorithm uses the - <url href="http://www.jstatsoft.org/v05/i08">Ziggurat Method by Marsaglia - and Tsang</url>.</p> + <p> + This module provides a pseudo random number generator. + The module contains a number of algorithms. + The uniform distribution algorithms use the + <url href="http://xorshift.di.unimi.it"> + xoroshiro116+ and xorshift1024* algorithms by Sebastiano Vigna. + </url> + The normal distribution algorithm uses the + <url href="http://www.jstatsoft.org/v05/i08"> + Ziggurat Method by Marsaglia and Tsang + </url> + on top of the uniform distribution algorithm. + </p> <p>For some algorithms, jump functions are provided for generating non-overlapping sequences for parallel computations. The jump functions perform calculations @@ -393,9 +400,34 @@ tests. We suggest to use a sign test to extract a random Boolean value.</pre> <name name="uniform" arity="0"/> <fsummary>Return a random float.</fsummary> <desc><marker id="uniform-0"/> - <p>Returns a random float uniformly distributed in the value + <p> + Returns a random float uniformly distributed in the value range <c>0.0 =< <anno>X</anno> < 1.0</c> and - updates the state in the process dictionary.</p> + updates the state in the process dictionary. + </p> + <p> + The generated numbers are on the form N * 2.0^(-53), + that is; equally spaced in the interval. + </p> + <warning> + <p> + This function may return exactly <c>0.0</c> which can be + fatal for certain applications. If that is undesired + you can use <c>(1.0 - rand:uniform())</c> to get the + interval <c>0.0 < <anno>X</anno> =< 1.0</c>. + </p> + <p> + If neither endpoint is desired you can test and re-try + like this: + </p> + <pre> +my_uniform() -> + case rand:uniform() of + 0.0 -> my_uniform(); + X -> X + end +end.</pre> + </warning> </desc> </func> @@ -414,9 +446,34 @@ tests. We suggest to use a sign test to extract a random Boolean value.</pre> <name name="uniform_s" arity="1"/> <fsummary>Return a random float.</fsummary> <desc> - <p>Returns, for a specified state, random float + <p> + Returns, for a specified state, random float uniformly distributed in the value range <c>0.0 =< - <anno>X</anno> < 1.0</c> and a new state.</p> + <anno>X</anno> < 1.0</c> and a new state. + </p> + <p> + The generated numbers are on the form N * 2.0^(-53), + that is; equally spaced in the interval. + </p> + <warning> + <p> + This function may return exactly <c>0.0</c> which can be + fatal for certain applications. If that is undesired + you can use <c>(1.0 - rand:uniform(State))</c> to get the + interval <c>0.0 < <anno>X</anno> =< 1.0</c>. + </p> + <p> + If neither endpoint is desired you can test and re-try + like this: + </p> + <pre> +my_uniform(State) -> + case rand:uniform(State) of + {0.0, NewState} -> my_uniform(NewState); + Result -> Result + end +end.</pre> + </warning> </desc> </func> diff --git a/lib/wx/api_gen/gl_gen_erl.erl b/lib/wx/api_gen/gl_gen_erl.erl index 3ad14825dd..45f5fd8f4c 100644 --- a/lib/wx/api_gen/gl_gen_erl.erl +++ b/lib/wx/api_gen/gl_gen_erl.erl @@ -35,6 +35,9 @@ open_write/1, open_write/2, close/0, erl_copyright/0, w/2, args/3, args/4, strip_name/2]). + +-define(HTTP_TOP, "https://www.khronos.org/registry/OpenGL-Refpages/"). + gl_defines(Defs) -> open_write("../include/gl.hrl"), erl_copyright(), @@ -96,7 +99,7 @@ gl_api(Fs) -> w("~n%% OPENGL API~n~n", []), w("%% This file is generated DO NOT EDIT~n~n", []), w("%% @doc Standard OpenGL api.~n", []), - w("%% See <a href=\"http://www.opengl.org/sdk/docs/man/\">www.opengl.org</a>~n",[]), + w("%% See <a href=\""++ ?HTTP_TOP ++ "\">www.khronos.org</a>~n",[]), w("%%~n", []), w("%% Booleans are represented by integers 0 and 1.~n~n", []), @@ -158,7 +161,7 @@ glu_api(Fs) -> w("~n%% OPENGL UTILITY API~n~n", []), w("%% This file is generated DO NOT EDIT~n~n", []), w("%% @doc A part of the standard OpenGL Utility api.~n", []), - w("%% See <a href=\"http://www.opengl.org/sdk/docs/man/\">www.opengl.org</a>~n",[]), + w("%% See <a href=\""++ ?HTTP_TOP ++ "\">www.khronos.org</a>~n",[]), w("%%~n", []), w("%% Booleans are represented by integers 0 and 1.~n~n", []), @@ -300,8 +303,7 @@ gen_doc(Name0, Alt, Export) -> Name = doc_name(Name0, Alt), case get({doc, Name}) of undefined -> - GLDoc = "http://www.opengl.org/sdk/docs/man/xhtml/", - case parse_doc(Name, _Dir1 ="gl_man4", _Dir2="gl_man2") of + case parse_doc(Name, Dir1 ="gl_man4", Dir2="gl_man2") of {error, _} -> case reverse(Name) of "BRA" ++ _ -> ok; @@ -311,13 +313,18 @@ gen_doc(Name0, Alt, Export) -> %% [Name, Name0, Dir1, Dir2]), ok end, - w("%% @doc ~s~n%%~n%% See <a href=\"~s~s.xml\">external</a> documentation.~n", - [Name, GLDoc, Name]); - Doc -> + w("%% @doc ~s~n%%~n" + "%% See <a href=\"~s\">external</a> documentation.~n", + [Name, ?HTTP_TOP]); + {Found, Doc} -> + {Dir,Ext} = case Found of + Dir1 -> {"gl4/html", "xhtml"}; + Dir2 -> {"gl2.1/xhtml", "xml"} + end, put({doc, Name}, Export), format_doc(Doc, ?LINE_LEN), - w("~n%%~n%% See <a href=\"~s~s.xml\">external</a> documentation.~n", - [GLDoc, Name]) + w("~n%%~n%% See <a href=\"~s~s/~s.~s\">external</a> documentation.~n", + [?HTTP_TOP, Dir, Name, Ext]) end; Where -> w("%% @doc ~n", []), @@ -327,9 +334,12 @@ gen_doc(Name0, Alt, Export) -> parse_doc(Name, Dir1, Dir2) -> case gl_scan_doc:file(filename:join(Dir1, Name++".xml"), []) of {error, {_, "no such" ++ _}} -> - gl_scan_doc:file(filename:join(Dir2, Name++".xml"), []); + case gl_scan_doc:file(filename:join(Dir2, Name++".xml"), []) of + {error, _} = Err -> Err; + Doc -> {Dir2, Doc} + end; Doc -> - Doc + {Dir1, Doc} end. format_doc(Strs, Count) when Count < 0 -> diff --git a/lib/wx/api_gen/gl_scan_doc.erl b/lib/wx/api_gen/gl_scan_doc.erl index 0a1c25ae13..6ed5438608 100644 --- a/lib/wx/api_gen/gl_scan_doc.erl +++ b/lib/wx/api_gen/gl_scan_doc.erl @@ -209,6 +209,10 @@ gen_output({startElement, _Uri, "para", _QName, _Attributes}, #state{gen_output= State#state{str=[para|Str]} end; +gen_output({endElement, _Uri, "para", _QName}, #state{gen_output=true, str=Str} = State) -> + %% Pick only the first paragraph in the descriptions + State#state{gen_output=false}; + %% gen_output({startElement, _Uri, What, _QName, _Attributes}, State) -> %% io:format("Skipped ~s~n",[What]), %% State; diff --git a/lib/wx/examples/simple/hello.erl b/lib/wx/examples/simple/hello.erl index 36bce56329..bf870c6f3e 100644 --- a/lib/wx/examples/simple/hello.erl +++ b/lib/wx/examples/simple/hello.erl @@ -29,7 +29,6 @@ -include_lib("wx/include/wx.hrl"). -export([start/0]). --compile(export_all). start() -> Wx = wx:new(), diff --git a/lib/wx/examples/simple/hello2.erl b/lib/wx/examples/simple/hello2.erl index 671b23d892..b9da622b6b 100644 --- a/lib/wx/examples/simple/hello2.erl +++ b/lib/wx/examples/simple/hello2.erl @@ -29,8 +29,9 @@ -module(hello2). -include_lib("wx/include/wx.hrl"). --export([start/0]). --compile(export_all). +-export([start/0, + init/1, handle_info/2, handle_event/2, handle_call/3, + code_change/3, terminate/2]). -behavoiur(wx_object). diff --git a/lib/wx/examples/simple/menu.erl b/lib/wx/examples/simple/menu.erl index 479df1ef98..93573fb97d 100644 --- a/lib/wx/examples/simple/menu.erl +++ b/lib/wx/examples/simple/menu.erl @@ -29,7 +29,6 @@ -include_lib("wx/include/wx.hrl"). -export([start/0]). --compile(export_all). %%%Lots of IDs to declare! -define(menuID_FILE_QUIT, ?wxID_EXIT). @@ -228,36 +227,6 @@ create_menubar_menu() -> %% %% %% -create_submenu_menu() -> - SubMenuMenu = wxMenu:new(), - wxMenu:append(SubMenuMenu, wxMenuItem:new([ - {id, ?menuID_SUBMENU_NORMAL}, - {text, "&Normal submenu item"}, - {help, "Disabled submenu item"} - ])), - %% note different way of adding check menu item - wxMenu:appendCheckItem(SubMenuMenu, - ?menuID_SUBMENU_CHECK, - "&Check submenu item", - [{help, "Check submenu item"}]), - wxMenu:appendRadioItem(SubMenuMenu, - ?menuID_SUBMENU_RADIO_1, - "Radio item &1", - [{help, "Radio item"}]), - wxMenu:appendRadioItem(SubMenuMenu, - ?menuID_SUBMENU_RADIO_2, - "Radio item &2", - [{help, "Radio item"}]), - wxMenu:appendRadioItem(SubMenuMenu, - ?menuID_SUBMENU_RADIO_3, - "Radio item &3", - [{help, "Radio item"}]), - SubMenuMenu. - - -%% -%% -%% create_menu_menu() -> MenuMenu = wxMenu:new(), wxMenu:append(MenuMenu, wxMenuItem:new([ diff --git a/lib/wx/examples/simple/minimal.erl b/lib/wx/examples/simple/minimal.erl index 9f6365e008..346f86433a 100644 --- a/lib/wx/examples/simple/minimal.erl +++ b/lib/wx/examples/simple/minimal.erl @@ -29,7 +29,7 @@ -include_lib("wx/include/wx.hrl"). -export([start/0]). --compile(export_all). + start() -> Wx = wx:new(), diff --git a/lib/wx/examples/sudoku/sudoku.erl b/lib/wx/examples/sudoku/sudoku.erl index 97f35870de..353f90d86f 100644 --- a/lib/wx/examples/sudoku/sudoku.erl +++ b/lib/wx/examples/sudoku/sudoku.erl @@ -26,9 +26,8 @@ -module(sudoku). --export([go/0]). +-export([go/0, start/0]). --compile(export_all). -include("sudoku.hrl"). diff --git a/lib/wx/examples/sudoku/sudoku_game.erl b/lib/wx/examples/sudoku/sudoku_game.erl index 1e579a7c88..aa15c05653 100644 --- a/lib/wx/examples/sudoku/sudoku_game.erl +++ b/lib/wx/examples/sudoku/sudoku_game.erl @@ -18,7 +18,9 @@ %% %CopyrightEnd% -module(sudoku_game). --compile(export_all). + +-export([init/1, + indx/1, rcm/1, level/1]). -include("sudoku.hrl"). init(GFX) -> @@ -128,17 +130,6 @@ rebuild_all(_, S0) -> add(rcm(Indx),Val,Acc) end, S1, Solved). -is_ok({RI,CI,MI}, Vals) -> - [Ri,Ci,Mi] = all(RI,CI,MI), - case element(indx(RI,CI),Vals) of - 0 -> true; - Val -> - Vs = [[element(indx(R,C),Vals)||{R,C} <- Obs, - not ((R == RI) and (C == CI))] - || Obs <- [Ri,Ci,Mi]], - not lists:member(Val,lists:flatten(Vs)) - end. - test() -> %% Known to solvable [{{1,2},6}, {{1,4},1}, {{1,6},4}, {{1,8},5}, {{2,3},8}, {{2,4},3}, {{2,6},5}, {{2,7},6}, @@ -377,14 +368,6 @@ get_poss([H|R],What,Tot) -> %% io:format("~p~n",[H]), get_poss(R,What, gb_sets:union(element(H,What),Tot)). -r2rs(R) -> - R0 = (R-1)*3, - [R0+1,R0+2,R0+3]. - -c2cs(C) -> - C0 = (C-1) rem 9, - [C0+1, C0+10, C0+19]. - mindx(row,Indx) -> {R,_C,M} = rcm(Indx), mindx(R,M); diff --git a/lib/wx/examples/sudoku/sudoku_gui.erl b/lib/wx/examples/sudoku/sudoku_gui.erl index 81d20814e1..4c4ad83cd7 100644 --- a/lib/wx/examples/sudoku/sudoku_gui.erl +++ b/lib/wx/examples/sudoku/sudoku_gui.erl @@ -28,7 +28,7 @@ -export([init/1, handle_info/2, handle_call/3, handle_cast/2, handle_event/2, terminate/2, code_change/3]). --compile(export_all). +-export([new/1]). -behaviour(wx_object). diff --git a/lib/wx/examples/xrc/xrc.erl b/lib/wx/examples/xrc/xrc.erl index 729f4ad0db..7e967777d2 100644 --- a/lib/wx/examples/xrc/xrc.erl +++ b/lib/wx/examples/xrc/xrc.erl @@ -23,7 +23,7 @@ %%%------------------------------------------------------------------- -module(xrc). --compile(export_all). +-export([start/0]). -include("../../include/wx.hrl"). diff --git a/lib/wx/src/gen/gl.erl b/lib/wx/src/gen/gl.erl index 4a178ea1e4..47afb25c5d 100644 --- a/lib/wx/src/gen/gl.erl +++ b/lib/wx/src/gen/gl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2016. All Rights Reserved. +%% Copyright Ericsson AB 2008-2017. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ %% This file is generated DO NOT EDIT %% @doc Standard OpenGL api. -%% See <a href="http://www.opengl.org/sdk/docs/man/">www.opengl.org</a> +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">www.khronos.org</a> %% %% Booleans are represented by integers 0 and 1. @@ -324,7 +324,7 @@ send_bin(Tuple) when is_tuple(Tuple) -> %% value is then masked with 2 m-1, where m is the number of bits in a color index stored %% in the frame buffer. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClearIndex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glClearIndex.xml">external</a> documentation. -spec clearIndex(C) -> 'ok' when C :: float(). clearIndex(C) -> cast(5037, <<C:?GLfloat>>). @@ -335,7 +335,7 @@ clearIndex(C) -> %% to clear the color buffers. Values specified by ``gl:clearColor'' are clamped to the %% range [0 1]. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClearColor.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glClearColor.xhtml">external</a> documentation. -spec clearColor(Red, Green, Blue, Alpha) -> 'ok' when Red :: clamp(),Green :: clamp(),Blue :: clamp(),Alpha :: clamp(). clearColor(Red,Green,Blue,Alpha) -> cast(5038, <<Red:?GLclampf,Green:?GLclampf,Blue:?GLclampf,Alpha:?GLclampf>>). @@ -346,26 +346,7 @@ clearColor(Red,Green,Blue,Alpha) -> %% , ``gl:clearDepth'', and ``gl:clearStencil''. Multiple color buffers can be cleared %% simultaneously by selecting more than one buffer at a time using {@link gl:drawBuffer/1} . %% -%% The pixel ownership test, the scissor test, dithering, and the buffer writemasks affect -%% the operation of ``gl:clear''. The scissor box bounds the cleared region. Alpha function, -%% blend function, logical operation, stenciling, texture mapping, and depth-buffering are -%% ignored by ``gl:clear''. -%% -%% ``gl:clear'' takes a single argument that is the bitwise OR of several values indicating -%% which buffer is to be cleared. -%% -%% The values are as follows: -%% -%% `?GL_COLOR_BUFFER_BIT': Indicates the buffers currently enabled for color writing. -%% -%% `?GL_DEPTH_BUFFER_BIT': Indicates the depth buffer. -%% -%% `?GL_STENCIL_BUFFER_BIT': Indicates the stencil buffer. -%% -%% The value to which each buffer is cleared depends on the setting of the clear value for -%% that buffer. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClear.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glClear.xhtml">external</a> documentation. -spec clear(Mask) -> 'ok' when Mask :: integer(). clear(Mask) -> cast(5039, <<Mask:?GLbitfield>>). @@ -378,11 +359,7 @@ clear(Mask) -> %% to the corresponding bit in the color index buffer (or buffers). Where a 0 (zero) appears, %% the corresponding bit is write-protected. %% -%% This mask is used only in color index mode, and it affects only the buffers currently -%% selected for writing (see {@link gl:drawBuffer/1} ). Initially, all bits are enabled for -%% writing. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIndexMask.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glIndexMask.xml">external</a> documentation. -spec indexMask(Mask) -> 'ok' when Mask :: integer(). indexMask(Mask) -> cast(5040, <<Mask:?GLuint>>). @@ -395,10 +372,7 @@ indexMask(Mask) -> %% is `?GL_FALSE', for example, no change is made to the red component of any pixel %% in any of the color buffers, regardless of the drawing operation attempted. %% -%% Changes to individual bits of components cannot be controlled. Rather, changes are either -%% enabled or disabled for entire color components. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glColorMask.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glColorMask.xhtml">external</a> documentation. -spec colorMask(Red, Green, Blue, Alpha) -> 'ok' when Red :: 0|1,Green :: 0|1,Blue :: 0|1,Alpha :: 0|1. colorMask(Red,Green,Blue,Alpha) -> cast(5041, <<Red:?GLboolean,Green:?GLboolean,Blue:?GLboolean,Alpha:?GLboolean>>). @@ -411,37 +385,7 @@ colorMask(Red,Green,Blue,Alpha) -> %% testing is enabled. By default, it is not enabled. (See {@link gl:enable/1} and {@link gl:enable/1} %% of `?GL_ALPHA_TEST'.) %% -%% `Func' and `Ref' specify the conditions under which the pixel is drawn. The -%% incoming alpha value is compared to `Ref' using the function specified by `Func' . -%% If the value passes the comparison, the incoming fragment is drawn if it also passes subsequent -%% stencil and depth buffer tests. If the value fails the comparison, no change is made to -%% the frame buffer at that pixel location. The comparison functions are as follows: -%% -%% `?GL_NEVER': Never passes. -%% -%% `?GL_LESS': Passes if the incoming alpha value is less than the reference value. -%% -%% `?GL_EQUAL': Passes if the incoming alpha value is equal to the reference value. -%% -%% `?GL_LEQUAL': Passes if the incoming alpha value is less than or equal to the reference -%% value. -%% -%% `?GL_GREATER': Passes if the incoming alpha value is greater than the reference -%% value. -%% -%% `?GL_NOTEQUAL': Passes if the incoming alpha value is not equal to the reference -%% value. -%% -%% `?GL_GEQUAL': Passes if the incoming alpha value is greater than or equal to the -%% reference value. -%% -%% `?GL_ALWAYS': Always passes (initial value). -%% -%% ``gl:alphaFunc'' operates on all pixel write operations, including those resulting from -%% the scan conversion of points, lines, polygons, and bitmaps, and from pixel draw and copy -%% operations. ``gl:alphaFunc'' does not affect screen clear operations. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glAlphaFunc.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glAlphaFunc.xml">external</a> documentation. -spec alphaFunc(Func, Ref) -> 'ok' when Func :: enum(),Ref :: clamp(). alphaFunc(Func,Ref) -> cast(5042, <<Func:?GLenum,Ref:?GLclampf>>). @@ -453,70 +397,7 @@ alphaFunc(Func,Ref) -> %% is initially disabled. Use {@link gl:enable/1} and {@link gl:enable/1} with argument `?GL_BLEND' %% to enable and disable blending. %% -%% ``gl:blendFunc'' defines the operation of blending for all draw buffers when it is enabled. -%% ``gl:blendFunci'' defines the operation of blending for a single draw buffer specified -%% by `Buf' when enabled for that draw buffer. `Sfactor' specifies which method -%% is used to scale the source color components. `Dfactor' specifies which method is -%% used to scale the destination color components. Both parameters must be one of the following -%% symbolic constants: `?GL_ZERO', `?GL_ONE', `?GL_SRC_COLOR', `?GL_ONE_MINUS_SRC_COLOR' -%% , `?GL_DST_COLOR', `?GL_ONE_MINUS_DST_COLOR', `?GL_SRC_ALPHA', `?GL_ONE_MINUS_SRC_ALPHA' -%% , `?GL_DST_ALPHA', `?GL_ONE_MINUS_DST_ALPHA', `?GL_CONSTANT_COLOR', `?GL_ONE_MINUS_CONSTANT_COLOR' -%% , `?GL_CONSTANT_ALPHA', `?GL_ONE_MINUS_CONSTANT_ALPHA', `?GL_SRC_ALPHA_SATURATE' -%% , `?GL_SRC1_COLOR', `?GL_ONE_MINUS_SRC1_COLOR', `?GL_SRC1_ALPHA', and `?GL_ONE_MINUS_SRC1_ALPHA' -%% . The possible methods are described in the following table. Each method defines four -%% scale factors, one each for red, green, blue, and alpha. In the table and in subsequent -%% equations, first source, second source and destination color components are referred to -%% as (R s0 G s0 B s0 A s0), (R s1 G s1 B s1 A s1) and (R d G d B d A d), respectively. The color specified by {@link gl:blendColor/4} is referred to -%% as (R c G c B c A c). They are understood to have integer values between 0 and (k R k G k B k A), where -%% -%% k c=2(m c)-1 -%% -%% and (m R m G m B m A) is the number of red, green, blue, and alpha bitplanes. -%% -%% Source and destination scale factors are referred to as (s R s G s B s A) and (d R d G d B d A). The scale factors described -%% in the table, denoted (f R f G f B f A), represent either source or destination factors. All scale factors -%% have range [0 1]. -%% -%% <table><tbody><tr><td>` Parameter '</td><td>(f R f G f B f A)</td></tr></tbody><tbody><tr><td>`?GL_ZERO' -%% </td><td>(0 0 0 0)</td></tr><tr><td>`?GL_ONE'</td><td>(1 1 1 1)</td></tr><tr><td>`?GL_SRC_COLOR'</td> -%% <td>(R s0 k/R G s0 k/G B s0 k/B A s0 k/A)</td></tr><tr><td>`?GL_ONE_MINUS_SRC_COLOR'</td><td>(1 1 1 1)-(R s0 k/R G s0 k/G B s0 k/B -%% A s0 k/A)</td></tr><tr><td>`?GL_DST_COLOR' -%% </td><td>(R d k/R G d k/G B d k/B A d k/A)</td></tr><tr><td>`?GL_ONE_MINUS_DST_COLOR'</td><td>(1 1 1 1)-(R d k/R G d k/G B d k/B -%% A d k/A)</td></tr><tr><td>`?GL_SRC_ALPHA' -%% </td><td>(A s0 k/A A s0 k/A A s0 k/A A s0 k/A)</td></tr><tr><td>`?GL_ONE_MINUS_SRC_ALPHA'</td><td>(1 1 1 1)-(A s0 k/A A s0 k/A A s0 -%% k/A A s0 k/A)</td></tr><tr><td>`?GL_DST_ALPHA' -%% </td><td>(A d k/A A d k/A A d k/A A d k/A)</td></tr><tr><td>`?GL_ONE_MINUS_DST_ALPHA'</td><td>(1 1 1 1)-(A d k/A A d k/A A d k/A -%% A d k/A)</td></tr><tr><td>`?GL_CONSTANT_COLOR' -%% </td><td>(R c G c B c A c)</td></tr><tr><td>`?GL_ONE_MINUS_CONSTANT_COLOR'</td><td>(1 1 1 1)-(R c G c B c A c)</td></tr><tr><td> -%% `?GL_CONSTANT_ALPHA'</td><td>(A c A c A c A c)</td></tr><tr><td>`?GL_ONE_MINUS_CONSTANT_ALPHA'</td> -%% <td>(1 1 1 1)-(A c A c A c A c)</td></tr><tr><td>`?GL_SRC_ALPHA_SATURATE'</td><td>(i i i 1)</td></tr><tr><td>`?GL_SRC1_COLOR' -%% </td><td>(R s1 k/R G s1 k/G B s1 k/B A s1 k/A)</td></tr><tr><td>`?GL_ONE_MINUS_SRC1_COLOR'</td><td>(1 1 1 1)-(R s1 k/R G s1 k/G B -%% s1 k/B A s1 k/A)</td></tr><tr><td>`?GL_SRC1_ALPHA' -%% </td><td>(A s1 k/A A s1 k/A A s1 k/A A s1 k/A)</td></tr><tr><td>`?GL_ONE_MINUS_SRC1_ALPHA'</td><td>(1 1 1 1)-(A s1 k/A A s1 k/A A -%% s1 k/A A s1 k/A)</td></tr></tbody></table> -%% -%% -%% In the table, -%% -%% i=min(A s k A-A d) k/A -%% -%% To determine the blended RGBA values of a pixel, the system uses the following equations: -%% -%% -%% R d=min(k R R s s R+R d d R) G d=min(k G G s s G+G d d G) B d=min(k B B s s B+B d d B) A d=min(k A A s s A+A d d A) -%% -%% Despite the apparent precision of the above equations, blending arithmetic is not exactly -%% specified, because blending operates with imprecise integer color values. However, a blend -%% factor that should be equal to 1 is guaranteed not to modify its multiplicand, and a blend -%% factor equal to 0 reduces its multiplicand to 0. For example, when `Sfactor' is `?GL_SRC_ALPHA' -%% , `Dfactor' is `?GL_ONE_MINUS_SRC_ALPHA', and A s is equal to k A, the equations -%% reduce to simple replacement: -%% -%% R d=R s G d=G s B d=B s A d=A s -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml">external</a> documentation. -spec blendFunc(Sfactor, Dfactor) -> 'ok' when Sfactor :: enum(),Dfactor :: enum(). blendFunc(Sfactor,Dfactor) -> cast(5043, <<Sfactor:?GLenum,Dfactor:?GLenum>>). @@ -528,25 +409,7 @@ blendFunc(Sfactor,Dfactor) -> %% buffer. To enable or disable the logical operation, call {@link gl:enable/1} and {@link gl:enable/1} %% using the symbolic constant `?GL_COLOR_LOGIC_OP'. The initial value is disabled. %% -%% <table><tbody><tr><td>` Opcode '</td><td>` Resulting Operation '</td></tr></tbody> -%% <tbody><tr><td>`?GL_CLEAR'</td><td> 0 </td></tr><tr><td>`?GL_SET'</td><td> 1 </td> -%% </tr><tr><td>`?GL_COPY'</td><td> s </td></tr><tr><td>`?GL_COPY_INVERTED'</td><td> -%% ~s </td></tr><tr><td>`?GL_NOOP'</td><td> d </td></tr><tr><td>`?GL_INVERT'</td><td> -%% ~d </td></tr><tr><td>`?GL_AND'</td><td> s & d </td></tr><tr><td>`?GL_NAND'</td> -%% <td> ~(s & d) </td></tr><tr><td>`?GL_OR'</td><td> s | d </td></tr><tr><td>`?GL_NOR' -%% </td><td> ~(s | d) </td></tr><tr><td>`?GL_XOR'</td><td> s ^ d </td></tr><tr><td>`?GL_EQUIV' -%% </td><td> ~(s ^ d) </td></tr><tr><td>`?GL_AND_REVERSE'</td><td> s & ~d </td></tr> -%% <tr><td>`?GL_AND_INVERTED'</td><td> ~s & d </td></tr><tr><td>`?GL_OR_REVERSE' -%% </td><td> s | ~d </td></tr><tr><td>`?GL_OR_INVERTED'</td><td> ~s | d </td></tr></tbody> -%% </table> -%% -%% `Opcode' is a symbolic constant chosen from the list above. In the explanation of -%% the logical operations, `s' represents the incoming color and `d' represents -%% the color in the frame buffer. Standard C-language operators are used. As these bitwise -%% operators suggest, the logical operation is applied independently to each bit pair of -%% the source and destination colors. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLogicOp.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glLogicOp.xhtml">external</a> documentation. -spec logicOp(Opcode) -> 'ok' when Opcode :: enum(). logicOp(Opcode) -> cast(5044, <<Opcode:?GLenum>>). @@ -559,10 +422,7 @@ logicOp(Opcode) -> %% commands with the argument `?GL_CULL_FACE'. Facets include triangles, quadrilaterals, %% polygons, and rectangles. %% -%% {@link gl:frontFace/1} specifies which of the clockwise and counterclockwise facets are -%% front-facing and back-facing. See {@link gl:frontFace/1} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCullFace.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCullFace.xhtml">external</a> documentation. -spec cullFace(Mode) -> 'ok' when Mode :: enum(). cullFace(Mode) -> cast(5045, <<Mode:?GLenum>>). @@ -574,18 +434,7 @@ cullFace(Mode) -> %% rendering of the image. To enable and disable elimination of back-facing polygons, call {@link gl:enable/1} %% and {@link gl:enable/1} with argument `?GL_CULL_FACE'. %% -%% The projection of a polygon to window coordinates is said to have clockwise winding if -%% an imaginary object following the path from its first vertex, its second vertex, and so -%% on, to its last vertex, and finally back to its first vertex, moves in a clockwise direction -%% about the interior of the polygon. The polygon's winding is said to be counterclockwise -%% if the imaginary object following the same path moves in a counterclockwise direction -%% about the interior of the polygon. ``gl:frontFace'' specifies whether polygons with -%% clockwise winding in window coordinates, or counterclockwise winding in window coordinates, -%% are taken to be front-facing. Passing `?GL_CCW' to `Mode' selects counterclockwise -%% polygons as front-facing; `?GL_CW' selects clockwise polygons as front-facing. By -%% default, counterclockwise polygons are taken to be front-facing. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFrontFace.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glFrontFace.xhtml">external</a> documentation. -spec frontFace(Mode) -> 'ok' when Mode :: enum(). frontFace(Mode) -> cast(5046, <<Mode:?GLenum>>). @@ -597,7 +446,7 @@ frontFace(Mode) -> %% will be used to rasterize points. Otherwise, the value written to the shading language %% built-in variable gl_PointSize will be used. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPointSize.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPointSize.xhtml">external</a> documentation. -spec pointSize(Size) -> 'ok' when Size :: float(). pointSize(Size) -> cast(5047, <<Size:?GLfloat>>). @@ -609,27 +458,7 @@ pointSize(Size) -> %% is enabled. To enable and disable line antialiasing, call {@link gl:enable/1} and {@link gl:enable/1} %% with argument `?GL_LINE_SMOOTH'. Line antialiasing is initially disabled. %% -%% If line antialiasing is disabled, the actual width is determined by rounding the supplied -%% width to the nearest integer. (If the rounding results in the value 0, it is as if the -%% line width were 1.) If |&Delta; x|>=|&Delta; y|, `i' pixels are filled in each column that is rasterized, -%% where `i' is the rounded value of `Width' . Otherwise, `i' pixels are filled -%% in each row that is rasterized. -%% -%% If antialiasing is enabled, line rasterization produces a fragment for each pixel square -%% that intersects the region lying within the rectangle having width equal to the current -%% line width, length equal to the actual length of the line, and centered on the mathematical -%% line segment. The coverage value for each fragment is the window coordinate area of the -%% intersection of the rectangular region with the corresponding pixel square. This value -%% is saved and used in the final rasterization step. -%% -%% Not all widths can be supported when line antialiasing is enabled. If an unsupported -%% width is requested, the nearest supported width is used. Only width 1 is guaranteed to -%% be supported; others depend on the implementation. Likewise, there is a range for aliased -%% line widths as well. To query the range of supported widths and the size difference between -%% supported widths within the range, call {@link gl:getBooleanv/1} with arguments `?GL_ALIASED_LINE_WIDTH_RANGE' -%% , `?GL_SMOOTH_LINE_WIDTH_RANGE', and `?GL_SMOOTH_LINE_WIDTH_GRANULARITY'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLineWidth.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glLineWidth.xhtml">external</a> documentation. -spec lineWidth(Width) -> 'ok' when Width :: float(). lineWidth(Width) -> cast(5048, <<Width:?GLfloat>>). @@ -641,27 +470,7 @@ lineWidth(Width) -> %% stipple pattern `Pattern' , the repeat count `Factor' , and an integer stipple %% counter s. %% -%% Counter s is reset to 0 whenever {@link gl:'begin'/1} is called and before each line segment -%% of a {@link gl:'begin'/1} (`?GL_LINES')/ {@link gl:'begin'/1} sequence is generated. It is -%% incremented after each fragment of a unit width aliased line segment is generated or after -%% each i fragments of an i width line segment are generated. The i fragments associated -%% with count s are masked out if -%% -%% `Pattern' bit (s/factor)% 16 -%% -%% is 0, otherwise these fragments are sent to the frame buffer. Bit zero of `Pattern' -%% is the least significant bit. -%% -%% Antialiased lines are treated as a sequence of 1×width rectangles for purposes of stippling. -%% Whether rectangle s is rasterized or not depends on the fragment rule described for -%% aliased lines, counting rectangles rather than groups of fragments. -%% -%% To enable and disable line stippling, call {@link gl:enable/1} and {@link gl:enable/1} -%% with argument `?GL_LINE_STIPPLE'. When enabled, the line stipple pattern is applied -%% as described above. When disabled, it is as if the pattern were all 1's. Initially, line -%% stippling is disabled. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLineStipple.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glLineStipple.xml">external</a> documentation. -spec lineStipple(Factor, Pattern) -> 'ok' when Factor :: integer(),Pattern :: integer(). lineStipple(Factor,Pattern) -> cast(5049, <<Factor:?GLint,Pattern:?GLushort>>). @@ -674,22 +483,7 @@ lineStipple(Factor,Pattern) -> %% polygon's vertices are lit and the polygon is clipped and possibly culled before these %% modes are applied. %% -%% Three modes are defined and can be specified in `Mode' : -%% -%% `?GL_POINT': Polygon vertices that are marked as the start of a boundary edge are -%% drawn as points. Point attributes such as `?GL_POINT_SIZE' and `?GL_POINT_SMOOTH' -%% control the rasterization of the points. Polygon rasterization attributes other than `?GL_POLYGON_MODE' -%% have no effect. -%% -%% `?GL_LINE': Boundary edges of the polygon are drawn as line segments. Line attributes -%% such as `?GL_LINE_WIDTH' and `?GL_LINE_SMOOTH' control the rasterization of -%% the lines. Polygon rasterization attributes other than `?GL_POLYGON_MODE' have no -%% effect. -%% -%% `?GL_FILL': The interior of the polygon is filled. Polygon attributes such as `?GL_POLYGON_SMOOTH' -%% control the rasterization of the polygon. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPolygonMode.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPolygonMode.xhtml">external</a> documentation. -spec polygonMode(Face, Mode) -> 'ok' when Face :: enum(),Mode :: enum(). polygonMode(Face,Mode) -> cast(5050, <<Face:?GLenum,Mode:?GLenum>>). @@ -704,10 +498,7 @@ polygonMode(Face,Mode) -> %% a resolvable offset for a given implementation. The offset is added before the depth test %% is performed and before the value is written into the depth buffer. %% -%% ``gl:polygonOffset'' is useful for rendering hidden-line images, for applying decals -%% to surfaces, and for rendering solids with highlighted edges. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPolygonOffset.xhtml">external</a> documentation. -spec polygonOffset(Factor, Units) -> 'ok' when Factor :: float(),Units :: float(). polygonOffset(Factor,Units) -> cast(5051, <<Factor:?GLfloat,Units:?GLfloat>>). @@ -718,27 +509,7 @@ polygonOffset(Factor,Units) -> %% fragments produced by rasterization, creating a pattern. Stippling is independent of polygon %% antialiasing. %% -%% `Pattern' is a pointer to a 32×32 stipple pattern that is stored in memory just -%% like the pixel data supplied to a {@link gl:drawPixels/5} call with height and `width' -%% both equal to 32, a pixel format of `?GL_COLOR_INDEX', and data type of `?GL_BITMAP' -%% . That is, the stipple pattern is represented as a 32×32 array of 1-bit color indices -%% packed in unsigned bytes. {@link gl:pixelStoref/2} parameters like `?GL_UNPACK_SWAP_BYTES' -%% and `?GL_UNPACK_LSB_FIRST' affect the assembling of the bits into a stipple pattern. -%% Pixel transfer operations (shift, offset, pixel map) are not applied to the stipple image, -%% however. -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a stipple pattern is specified, `Pattern' is -%% treated as a byte offset into the buffer object's data store. -%% -%% To enable and disable polygon stippling, call {@link gl:enable/1} and {@link gl:enable/1} -%% with argument `?GL_POLYGON_STIPPLE'. Polygon stippling is initially disabled. If -%% it's enabled, a rasterized polygon fragment with window coordinates x w and y w is -%% sent to the next stage of the GL if and only if the ( x w% 32)th bit in the ( y w% 32)th -%% row of the stipple pattern is 1 (one). When polygon stippling is disabled, it is as if -%% the stipple pattern consists of all 1's. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPolygonStipple.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPolygonStipple.xml">external</a> documentation. -spec polygonStipple(Mask) -> 'ok' when Mask :: binary(). polygonStipple(Mask) -> send_bin(Mask), @@ -753,11 +524,7 @@ polygonStipple(Mask) -> %% Unlike {@link gl:readPixels/7} , however, pixel transfer operations (shift, offset, pixel %% map) are not applied to the returned stipple image. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a polygon stipple pattern is requested, `Pattern' -%% is treated as a byte offset into the buffer object's data store. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetPolygonStipple.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetPolygonStipple.xml">external</a> documentation. -spec getPolygonStipple() -> binary(). getPolygonStipple() -> call(5053, <<>>). @@ -771,13 +538,7 @@ getPolygonStipple() -> %% of a nonboundary edge. ``gl:edgeFlag'' sets the edge flag bit to `?GL_TRUE' if `Flag' %% is `?GL_TRUE' and to `?GL_FALSE' otherwise. %% -%% The vertices of connected triangles and connected quadrilaterals are always marked as -%% boundary, regardless of the value of the edge flag. -%% -%% Boundary and nonboundary edge flags on vertices are significant only if `?GL_POLYGON_MODE' -%% is set to `?GL_POINT' or `?GL_LINE'. See {@link gl:polygonMode/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEdgeFlag.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEdgeFlag.xml">external</a> documentation. -spec edgeFlag(Flag) -> 'ok' when Flag :: 0|1. edgeFlag(Flag) -> cast(5054, <<Flag:?GLboolean>>). @@ -792,17 +553,7 @@ edgeFlagv({Flag}) -> edgeFlag(Flag). %% first two arguments, `X' and `Y' , specify the lower left corner of the box. `Width' %% and `Height' specify the width and height of the box. %% -%% To enable and disable the scissor test, call {@link gl:enable/1} and {@link gl:enable/1} -%% with argument `?GL_SCISSOR_TEST'. The test is initially disabled. While the test -%% is enabled, only pixels that lie within the scissor box can be modified by drawing commands. -%% Window coordinates have integer values at the shared corners of frame buffer pixels. glScissor(0,0,1,1) -%% allows modification of only the lower left pixel in the window, and glScissor(0,0,0,0) -%% doesn't allow modification of any pixels in the window. -%% -%% When the scissor test is disabled, it is as though the scissor box includes the entire -%% window. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glScissor.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glScissor.xhtml">external</a> documentation. -spec scissor(X, Y, Width, Height) -> 'ok' when X :: integer(),Y :: integer(),Width :: integer(),Height :: integer(). scissor(X,Y,Width,Height) -> cast(5055, <<X:?GLint,Y:?GLint,Width:?GLsizei,Height:?GLsizei>>). @@ -817,20 +568,7 @@ scissor(X,Y,Width,Height) -> %% clipping planes. Because the resulting clipping region is the intersection of the defined %% half-spaces, it is always convex. %% -%% ``gl:clipPlane'' specifies a half-space using a four-component plane equation. When ``gl:clipPlane'' -%% is called, `Equation' is transformed by the inverse of the modelview matrix and -%% stored in the resulting eye coordinates. Subsequent changes to the modelview matrix have -%% no effect on the stored plane-equation components. If the dot product of the eye coordinates -%% of a vertex with the stored plane equation components is positive or zero, the vertex is `in' -%% with respect to that clipping plane. Otherwise, it is `out'. -%% -%% To enable and disable clipping planes, call {@link gl:enable/1} and {@link gl:enable/1} -%% with the argument `?GL_CLIP_PLANE'`i', where `i' is the plane number. -%% -%% All clipping planes are initially defined as (0, 0, 0, 0) in eye coordinates and are -%% disabled. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClipPlane.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glClipPlane.xml">external</a> documentation. -spec clipPlane(Plane, Equation) -> 'ok' when Plane :: enum(),Equation :: {float(),float(),float(),float()}. clipPlane(Plane,{E1,E2,E3,E4}) -> cast(5056, <<Plane:?GLenum,0:32,E1:?GLdouble,E2:?GLdouble,E3:?GLdouble,E4:?GLdouble>>). @@ -840,7 +578,7 @@ clipPlane(Plane,{E1,E2,E3,E4}) -> %% ``gl:getClipPlane'' returns in `Equation' the four coefficients of the plane equation %% for `Plane' . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetClipPlane.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetClipPlane.xml">external</a> documentation. -spec getClipPlane(Plane) -> {float(),float(),float(),float()} when Plane :: enum(). getClipPlane(Plane) -> call(5057, <<Plane:?GLenum>>). @@ -850,44 +588,7 @@ getClipPlane(Plane) -> %% When colors are written to the frame buffer, they are written into the color buffers %% specified by ``gl:drawBuffer''. The specifications are as follows: %% -%% `?GL_NONE': No color buffers are written. -%% -%% `?GL_FRONT_LEFT': Only the front left color buffer is written. -%% -%% `?GL_FRONT_RIGHT': Only the front right color buffer is written. -%% -%% `?GL_BACK_LEFT': Only the back left color buffer is written. -%% -%% `?GL_BACK_RIGHT': Only the back right color buffer is written. -%% -%% `?GL_FRONT': Only the front left and front right color buffers are written. If there -%% is no front right color buffer, only the front left color buffer is written. -%% -%% `?GL_BACK': Only the back left and back right color buffers are written. If there -%% is no back right color buffer, only the back left color buffer is written. -%% -%% `?GL_LEFT': Only the front left and back left color buffers are written. If there -%% is no back left color buffer, only the front left color buffer is written. -%% -%% `?GL_RIGHT': Only the front right and back right color buffers are written. If there -%% is no back right color buffer, only the front right color buffer is written. -%% -%% `?GL_FRONT_AND_BACK': All the front and back color buffers (front left, front right, -%% back left, back right) are written. If there are no back color buffers, only the front -%% left and front right color buffers are written. If there are no right color buffers, only -%% the front left and back left color buffers are written. If there are no right or back -%% color buffers, only the front left color buffer is written. -%% -%% If more than one color buffer is selected for drawing, then blending or logical operations -%% are computed and applied independently for each color buffer and can produce different -%% results in each buffer. -%% -%% Monoscopic contexts include only `left' buffers, and stereoscopic contexts include -%% both `left' and `right' buffers. Likewise, single-buffered contexts include -%% only `front' buffers, and double-buffered contexts include both `front' and `back' -%% buffers. The context is selected at GL initialization. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawBuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawBuffer.xhtml">external</a> documentation. -spec drawBuffer(Mode) -> 'ok' when Mode :: enum(). drawBuffer(Mode) -> cast(5058, <<Mode:?GLenum>>). @@ -904,15 +605,7 @@ drawBuffer(Mode) -> %% the `i'th color attachment where `i' ranges from zero to the value of `?GL_MAX_COLOR_ATTACHMENTS' %% minus one. %% -%% Nonstereo double-buffered configurations have only a front left and a back left buffer. -%% Single-buffered configurations have a front left and a front right buffer if stereo, and -%% only a front left buffer if nonstereo. It is an error to specify a nonexistent buffer to ``gl:readBuffer'' -%% . -%% -%% `Mode' is initially `?GL_FRONT' in single-buffered configurations and `?GL_BACK' -%% in double-buffered configurations. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glReadBuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glReadBuffer.xhtml">external</a> documentation. -spec readBuffer(Mode) -> 'ok' when Mode :: enum(). readBuffer(Mode) -> cast(5059, <<Mode:?GLenum>>). @@ -925,104 +618,7 @@ readBuffer(Mode) -> %% is `?GL_FALSE'. The initial value for `?GL_DITHER' and `?GL_MULTISAMPLE' %% is `?GL_TRUE'. %% -%% Both ``gl:enable'' and {@link gl:enable/1} take a single argument, `Cap' , which -%% can assume one of the following values: -%% -%% Some of the GL's capabilities are indexed. ``gl:enablei'' and ``gl:disablei'' enable -%% and disable indexed capabilities. -%% -%% `?GL_BLEND': If enabled, blend the computed fragment color values with the values -%% in the color buffers. See {@link gl:blendFunc/2} . -%% -%% `?GL_CLIP_DISTANCE'`i': If enabled, clip geometry against user-defined half -%% space `i'. -%% -%% `?GL_COLOR_LOGIC_OP': If enabled, apply the currently selected logical operation -%% to the computed fragment color and color buffer values. See {@link gl:logicOp/1} . -%% -%% `?GL_CULL_FACE': If enabled, cull polygons based on their winding in window coordinates. -%% See {@link gl:cullFace/1} . -%% -%% `?GL_DEPTH_CLAMP': If enabled, the -w c&le; z c&le; w c plane equation is -%% ignored by view volume clipping (effectively, there is no near or far plane clipping). -%% See {@link gl:depthRange/2} . -%% -%% `?GL_DEPTH_TEST': If enabled, do depth comparisons and update the depth buffer. -%% Note that even if the depth buffer exists and the depth mask is non-zero, the depth buffer -%% is not updated if the depth test is disabled. See {@link gl:depthFunc/1} and {@link gl:depthRange/2} -%% . -%% -%% `?GL_DITHER': If enabled, dither color components or indices before they are written -%% to the color buffer. -%% -%% `?GL_FRAMEBUFFER_SRGB': If enabled and the value of `?GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING' -%% for the framebuffer attachment corresponding to the destination buffer is `?GL_SRGB', -%% the R, G, and B destination color values (after conversion from fixed-point to floating-point) -%% are considered to be encoded for the sRGB color space and hence are linearized prior to -%% their use in blending. -%% -%% `?GL_LINE_SMOOTH': If enabled, draw lines with correct filtering. Otherwise, draw -%% aliased lines. See {@link gl:lineWidth/1} . -%% -%% `?GL_MULTISAMPLE': If enabled, use multiple fragment samples in computing the final -%% color of a pixel. See {@link gl:sampleCoverage/2} . -%% -%% `?GL_POLYGON_OFFSET_FILL': If enabled, and if the polygon is rendered in `?GL_FILL' -%% mode, an offset is added to depth values of a polygon's fragments before the depth comparison -%% is performed. See {@link gl:polygonOffset/2} . -%% -%% `?GL_POLYGON_OFFSET_LINE': If enabled, and if the polygon is rendered in `?GL_LINE' -%% mode, an offset is added to depth values of a polygon's fragments before the depth comparison -%% is performed. See {@link gl:polygonOffset/2} . -%% -%% `?GL_POLYGON_OFFSET_POINT': If enabled, an offset is added to depth values of a -%% polygon's fragments before the depth comparison is performed, if the polygon is rendered -%% in `?GL_POINT' mode. See {@link gl:polygonOffset/2} . -%% -%% `?GL_POLYGON_SMOOTH': If enabled, draw polygons with proper filtering. Otherwise, -%% draw aliased polygons. For correct antialiased polygons, an alpha buffer is needed and -%% the polygons must be sorted front to back. -%% -%% `?GL_PRIMITIVE_RESTART': Enables primitive restarting. If enabled, any one of the -%% draw commands which transfers a set of generic attribute array elements to the GL will -%% restart the primitive when the index of the vertex is equal to the primitive restart -%% index. See {@link gl:primitiveRestartIndex/1} . -%% -%% `?GL_SAMPLE_ALPHA_TO_COVERAGE': If enabled, compute a temporary coverage value where -%% each bit is determined by the alpha value at the corresponding sample location. The temporary -%% coverage value is then ANDed with the fragment coverage value. -%% -%% `?GL_SAMPLE_ALPHA_TO_ONE': If enabled, each sample alpha value is replaced by the -%% maximum representable alpha value. -%% -%% `?GL_SAMPLE_COVERAGE': If enabled, the fragment's coverage is ANDed with the temporary -%% coverage value. If `?GL_SAMPLE_COVERAGE_INVERT' is set to `?GL_TRUE', invert -%% the coverage value. See {@link gl:sampleCoverage/2} . -%% -%% `?GL_SAMPLE_SHADING': If enabled, the active fragment shader is run once for each -%% covered sample, or at fraction of this rate as determined by the current value of `?GL_MIN_SAMPLE_SHADING_VALUE' -%% . See {@link gl:minSampleShading/1} . -%% -%% `?GL_SAMPLE_MASK': If enabled, the sample coverage mask generated for a fragment -%% during rasterization will be ANDed with the value of `?GL_SAMPLE_MASK_VALUE' before -%% shading occurs. See {@link gl:sampleMaski/2} . -%% -%% `?GL_SCISSOR_TEST': If enabled, discard fragments that are outside the scissor rectangle. -%% See {@link gl:scissor/4} . -%% -%% `?GL_STENCIL_TEST': If enabled, do stencil testing and update the stencil buffer. -%% See {@link gl:stencilFunc/3} and {@link gl:stencilOp/3} . -%% -%% `?GL_TEXTURE_CUBE_MAP_SEAMLESS': If enabled, cubemap textures are sampled such that -%% when linearly sampling from the border between two adjacent faces, texels from both faces -%% are used to generate the final sample value. When disabled, texels from only a single -%% face are used to construct the final sample value. -%% -%% `?GL_PROGRAM_POINT_SIZE': If enabled and a vertex or geometry shader is active, -%% then the derived point size is taken from the (potentially clipped) shader builtin `?gl_PointSize' -%% and clamped to the implementation-dependent point size range. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEnable.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glEnable.xhtml">external</a> documentation. -spec enable(Cap) -> 'ok' when Cap :: enum(). enable(Cap) -> cast(5060, <<Cap:?GLenum>>). @@ -1042,31 +638,7 @@ disable(Cap) -> %% all capabilities except `?GL_DITHER' are disabled; `?GL_DITHER' is initially %% enabled. %% -%% The following capabilities are accepted for `Cap' : <table><tbody><tr><td>` Constant ' -%% </td><td>` See '</td></tr></tbody><tbody><tr><td>`?GL_BLEND'</td><td> {@link gl:blendFunc/2} -%% , {@link gl:logicOp/1} </td></tr><tr><td>`?GL_CLIP_DISTANCE'`i'</td><td> {@link gl:enable/1} -%% </td></tr><tr><td>`?GL_COLOR_LOGIC_OP'</td><td> {@link gl:logicOp/1} </td></tr><tr><td>`?GL_CULL_FACE' -%% </td><td> {@link gl:cullFace/1} </td></tr><tr><td>`?GL_DEPTH_CLAMP'</td><td> {@link gl:enable/1} -%% </td></tr><tr><td>`?GL_DEPTH_TEST'</td><td> {@link gl:depthFunc/1} , {@link gl:depthRange/2} -%% </td></tr><tr><td>`?GL_DITHER'</td><td> {@link gl:enable/1} </td></tr><tr><td>`?GL_FRAMEBUFFER_SRGB' -%% </td><td> {@link gl:enable/1} </td></tr><tr><td>`?GL_LINE_SMOOTH'</td><td> {@link gl:lineWidth/1} -%% </td></tr><tr><td>`?GL_MULTISAMPLE'</td><td> {@link gl:sampleCoverage/2} </td></tr><tr><td> -%% `?GL_POLYGON_SMOOTH'</td><td> {@link gl:polygonMode/2} </td></tr><tr><td>`?GL_POLYGON_OFFSET_FILL' -%% </td><td> {@link gl:polygonOffset/2} </td></tr><tr><td>`?GL_POLYGON_OFFSET_LINE'</td><td> -%% {@link gl:polygonOffset/2} </td></tr><tr><td>`?GL_POLYGON_OFFSET_POINT'</td><td> {@link gl:polygonOffset/2} -%% </td></tr><tr><td>`?GL_PROGRAM_POINT_SIZE'</td><td> {@link gl:enable/1} </td></tr><tr><td> -%% `?GL_PRIMITIVE_RESTART'</td><td> {@link gl:enable/1} , {@link gl:primitiveRestartIndex/1} </td> -%% </tr><tr><td>`?GL_SAMPLE_ALPHA_TO_COVERAGE'</td><td> {@link gl:sampleCoverage/2} </td></tr> -%% <tr><td>`?GL_SAMPLE_ALPHA_TO_ONE'</td><td> {@link gl:sampleCoverage/2} </td></tr><tr><td> -%% `?GL_SAMPLE_COVERAGE'</td><td> {@link gl:sampleCoverage/2} </td></tr><tr><td>`?GL_SAMPLE_MASK' -%% </td><td> {@link gl:enable/1} </td></tr><tr><td>`?GL_SCISSOR_TEST'</td><td> {@link gl:scissor/4} -%% </td></tr><tr><td>`?GL_STENCIL_TEST'</td><td> {@link gl:stencilFunc/3} , {@link gl:stencilOp/3} -%% </td></tr><tr><td>`?GL_TEXTURE_CUBEMAP_SEAMLESS'</td><td> {@link gl:enable/1} </td></tr> -%% </tbody></table> -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsEnabled.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsEnabled.xhtml">external</a> documentation. -spec isEnabled(Cap) -> 0|1 when Cap :: enum(). isEnabled(Cap) -> call(5062, <<Cap:?GLenum>>). @@ -1078,47 +650,7 @@ isEnabled(Cap) -> %% and {@link gl:enableClientState/1} take a single argument, `Cap' , which can assume %% one of the following values: %% -%% `?GL_COLOR_ARRAY': If enabled, the color array is enabled for writing and used during -%% rendering when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:drawElements/4} , -%% {@link gl:drawRangeElements/6} {@link gl:multiDrawArrays/3} , or see `glMultiDrawElements' -%% is called. See {@link gl:colorPointer/4} . -%% -%% `?GL_EDGE_FLAG_ARRAY': If enabled, the edge flag array is enabled for writing and -%% used during rendering when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:drawElements/4} -%% , {@link gl:drawRangeElements/6} {@link gl:multiDrawArrays/3} , or see `glMultiDrawElements' -%% is called. See {@link gl:edgeFlagPointer/2} . -%% -%% `?GL_FOG_COORD_ARRAY': If enabled, the fog coordinate array is enabled for writing -%% and used during rendering when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:drawElements/4} -%% , {@link gl:drawRangeElements/6} {@link gl:multiDrawArrays/3} , or see `glMultiDrawElements' -%% is called. See {@link gl:fogCoordPointer/3} . -%% -%% `?GL_INDEX_ARRAY': If enabled, the index array is enabled for writing and used during -%% rendering when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:drawElements/4} , -%% {@link gl:drawRangeElements/6} {@link gl:multiDrawArrays/3} , or see `glMultiDrawElements' -%% is called. See {@link gl:indexPointer/3} . -%% -%% `?GL_NORMAL_ARRAY': If enabled, the normal array is enabled for writing and used -%% during rendering when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:drawElements/4} -%% , {@link gl:drawRangeElements/6} {@link gl:multiDrawArrays/3} , or see `glMultiDrawElements' -%% is called. See {@link gl:normalPointer/3} . -%% -%% `?GL_SECONDARY_COLOR_ARRAY': If enabled, the secondary color array is enabled for -%% writing and used during rendering when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:drawElements/4} -%% , {@link gl:drawRangeElements/6} {@link gl:multiDrawArrays/3} , or see `glMultiDrawElements' -%% is called. See {@link gl:colorPointer/4} . -%% -%% `?GL_TEXTURE_COORD_ARRAY': If enabled, the texture coordinate array is enabled for -%% writing and used during rendering when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:drawElements/4} -%% , {@link gl:drawRangeElements/6} {@link gl:multiDrawArrays/3} , or see `glMultiDrawElements' -%% is called. See {@link gl:texCoordPointer/4} . -%% -%% `?GL_VERTEX_ARRAY': If enabled, the vertex array is enabled for writing and used -%% during rendering when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:drawElements/4} -%% , {@link gl:drawRangeElements/6} {@link gl:multiDrawArrays/3} , or see `glMultiDrawElements' -%% is called. See {@link gl:vertexPointer/4} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEnableClientState.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEnableClientState.xml">external</a> documentation. -spec enableClientState(Cap) -> 'ok' when Cap :: enum(). enableClientState(Cap) -> cast(5063, <<Cap:?GLenum>>). @@ -1135,809 +667,7 @@ disableClientState(Cap) -> %% symbolic constant indicating the state variable to be returned, and `Params' is a %% pointer to an array of the indicated type in which to place the returned data. %% -%% Type conversion is performed if `Params' has a different type than the state variable -%% value being requested. If ``gl:getBooleanv'' is called, a floating-point (or integer) -%% value is converted to `?GL_FALSE' if and only if it is 0.0 (or 0). Otherwise, it -%% is converted to `?GL_TRUE'. If ``gl:getIntegerv'' is called, boolean values are -%% returned as `?GL_TRUE' or `?GL_FALSE', and most floating-point values are rounded -%% to the nearest integer value. Floating-point colors and normals, however, are returned -%% with a linear mapping that maps 1.0 to the most positive representable integer value and -%% -1.0 to the most negative representable integer value. If ``gl:getFloatv'' or ``gl:getDoublev'' -%% is called, boolean values are returned as `?GL_TRUE' or `?GL_FALSE', and integer -%% values are converted to floating-point values. -%% -%% The following symbolic constants are accepted by `Pname' : -%% -%% `?GL_ACTIVE_TEXTURE': `Params' returns a single value indicating the active -%% multitexture unit. The initial value is `?GL_TEXTURE0'. See {@link gl:activeTexture/1} . -%% -%% -%% `?GL_ALIASED_LINE_WIDTH_RANGE': `Params' returns a pair of values indicating -%% the range of widths supported for aliased lines. See {@link gl:lineWidth/1} . -%% -%% `?GL_ARRAY_BUFFER_BINDING': `Params' returns a single value, the name of the -%% buffer object currently bound to the target `?GL_ARRAY_BUFFER'. If no buffer object -%% is bound to this target, 0 is returned. The initial value is 0. See {@link gl:bindBuffer/2} . -%% -%% -%% `?GL_BLEND': `Params' returns a single boolean value indicating whether blending -%% is enabled. The initial value is `?GL_FALSE'. See {@link gl:blendFunc/2} . -%% -%% `?GL_BLEND_COLOR': `Params' returns four values, the red, green, blue, and alpha -%% values which are the components of the blend color. See {@link gl:blendColor/4} . -%% -%% `?GL_BLEND_DST_ALPHA': `Params' returns one value, the symbolic constant identifying -%% the alpha destination blend function. The initial value is `?GL_ZERO'. See {@link gl:blendFunc/2} -%% and {@link gl:blendFuncSeparate/4} . -%% -%% `?GL_BLEND_DST_RGB': `Params' returns one value, the symbolic constant identifying -%% the RGB destination blend function. The initial value is `?GL_ZERO'. See {@link gl:blendFunc/2} -%% and {@link gl:blendFuncSeparate/4} . -%% -%% `?GL_BLEND_EQUATION_RGB': `Params' returns one value, a symbolic constant indicating -%% whether the RGB blend equation is `?GL_FUNC_ADD', `?GL_FUNC_SUBTRACT', `?GL_FUNC_REVERSE_SUBTRACT' -%% , `?GL_MIN' or `?GL_MAX'. See {@link gl:blendEquationSeparate/2} . -%% -%% `?GL_BLEND_EQUATION_ALPHA': `Params' returns one value, a symbolic constant -%% indicating whether the Alpha blend equation is `?GL_FUNC_ADD', `?GL_FUNC_SUBTRACT' -%% , `?GL_FUNC_REVERSE_SUBTRACT', `?GL_MIN' or `?GL_MAX'. See {@link gl:blendEquationSeparate/2} -%% . -%% -%% `?GL_BLEND_SRC_ALPHA': `Params' returns one value, the symbolic constant identifying -%% the alpha source blend function. The initial value is `?GL_ONE'. See {@link gl:blendFunc/2} -%% and {@link gl:blendFuncSeparate/4} . -%% -%% `?GL_BLEND_SRC_RGB': `Params' returns one value, the symbolic constant identifying -%% the RGB source blend function. The initial value is `?GL_ONE'. See {@link gl:blendFunc/2} -%% and {@link gl:blendFuncSeparate/4} . -%% -%% `?GL_COLOR_CLEAR_VALUE': `Params' returns four values: the red, green, blue, -%% and alpha values used to clear the color buffers. Integer values, if requested, are linearly -%% mapped from the internal floating-point representation such that 1.0 returns the most -%% positive representable integer value, and -1.0 returns the most negative representable -%% integer value. The initial value is (0, 0, 0, 0). See {@link gl:clearColor/4} . -%% -%% `?GL_COLOR_LOGIC_OP': `Params' returns a single boolean value indicating whether -%% a fragment's RGBA color values are merged into the framebuffer using a logical operation. -%% The initial value is `?GL_FALSE'. See {@link gl:logicOp/1} . -%% -%% `?GL_COLOR_WRITEMASK': `Params' returns four boolean values: the red, green, -%% blue, and alpha write enables for the color buffers. The initial value is (`?GL_TRUE', -%% `?GL_TRUE', `?GL_TRUE', `?GL_TRUE'). See {@link gl:colorMask/4} . -%% -%% `?GL_COMPRESSED_TEXTURE_FORMATS': `Params' returns a list of symbolic constants -%% of length `?GL_NUM_COMPRESSED_TEXTURE_FORMATS' indicating which compressed texture -%% formats are available. See {@link gl:compressedTexImage2D/8} . -%% -%% `?GL_CONTEXT_FLAGS': `Params' returns one value, the flags with which the context -%% was created (such as debugging functionality). -%% -%% `?GL_CULL_FACE': `Params' returns a single boolean value indicating whether -%% polygon culling is enabled. The initial value is `?GL_FALSE'. See {@link gl:cullFace/1} -%% . -%% -%% `?GL_CURRENT_PROGRAM': `Params' returns one value, the name of the program object -%% that is currently active, or 0 if no program object is active. See {@link gl:useProgram/1} . -%% -%% -%% `?GL_DEPTH_CLEAR_VALUE': `Params' returns one value, the value that is used -%% to clear the depth buffer. Integer values, if requested, are linearly mapped from the -%% internal floating-point representation such that 1.0 returns the most positive representable -%% integer value, and -1.0 returns the most negative representable integer value. The initial -%% value is 1. See {@link gl:clearDepth/1} . -%% -%% `?GL_DEPTH_FUNC': `Params' returns one value, the symbolic constant that indicates -%% the depth comparison function. The initial value is `?GL_LESS'. See {@link gl:depthFunc/1} -%% . -%% -%% `?GL_DEPTH_RANGE': `Params' returns two values: the near and far mapping limits -%% for the depth buffer. Integer values, if requested, are linearly mapped from the internal -%% floating-point representation such that 1.0 returns the most positive representable integer -%% value, and -1.0 returns the most negative representable integer value. The initial value -%% is (0, 1). See {@link gl:depthRange/2} . -%% -%% `?GL_DEPTH_TEST': `Params' returns a single boolean value indicating whether -%% depth testing of fragments is enabled. The initial value is `?GL_FALSE'. See {@link gl:depthFunc/1} -%% and {@link gl:depthRange/2} . -%% -%% `?GL_DEPTH_WRITEMASK': `Params' returns a single boolean value indicating if -%% the depth buffer is enabled for writing. The initial value is `?GL_TRUE'. See {@link gl:depthMask/1} -%% . -%% -%% `?GL_DITHER': `Params' returns a single boolean value indicating whether dithering -%% of fragment colors and indices is enabled. The initial value is `?GL_TRUE'. -%% -%% `?GL_DOUBLEBUFFER': `Params' returns a single boolean value indicating whether -%% double buffering is supported. -%% -%% `?GL_DRAW_BUFFER': `Params' returns one value, a symbolic constant indicating -%% which buffers are being drawn to. See {@link gl:drawBuffer/1} . The initial value is `?GL_BACK' -%% if there are back buffers, otherwise it is `?GL_FRONT'. -%% -%% `?GL_DRAW_BUFFER'`i': `Params' returns one value, a symbolic constant indicating -%% which buffers are being drawn to by the corresponding output color. See {@link gl:drawBuffers/1} -%% . The initial value of `?GL_DRAW_BUFFER0' is `?GL_BACK' if there are back buffers, -%% otherwise it is `?GL_FRONT'. The initial values of draw buffers for all other output -%% colors is `?GL_NONE'. -%% -%% `?GL_DRAW_FRAMEBUFFER_BINDING': `Params' returns one value, the name of the -%% framebuffer object currently bound to the `?GL_DRAW_FRAMEBUFFER' target. If the default -%% framebuffer is bound, this value will be zero. The initial value is zero. See {@link gl:bindFramebuffer/2} -%% . -%% -%% `?GL_READ_FRAMEBUFFER_BINDING': `Params' returns one value, the name of the -%% framebuffer object currently bound to the `?GL_READ_FRAMEBUFFER' target. If the default -%% framebuffer is bound, this value will be zero. The initial value is zero. See {@link gl:bindFramebuffer/2} -%% . -%% -%% `?GL_ELEMENT_ARRAY_BUFFER_BINDING': `Params' returns a single value, the name -%% of the buffer object currently bound to the target `?GL_ELEMENT_ARRAY_BUFFER'. If -%% no buffer object is bound to this target, 0 is returned. The initial value is 0. See {@link gl:bindBuffer/2} -%% . -%% -%% `?GL_FRAGMENT_SHADER_DERIVATIVE_HINT': `Params' returns one value, a symbolic -%% constant indicating the mode of the derivative accuracy hint for fragment shaders. The -%% initial value is `?GL_DONT_CARE'. See {@link gl:hint/2} . -%% -%% `?GL_IMPLEMENTATION_COLOR_READ_FORMAT': `Params' returns a single GLenum value -%% indicating the implementation's preferred pixel data format. See {@link gl:readPixels/7} . -%% -%% `?GL_IMPLEMENTATION_COLOR_READ_TYPE': `Params' returns a single GLenum value -%% indicating the implementation's preferred pixel data type. See {@link gl:readPixels/7} . -%% -%% `?GL_LINE_SMOOTH': `Params' returns a single boolean value indicating whether -%% antialiasing of lines is enabled. The initial value is `?GL_FALSE'. See {@link gl:lineWidth/1} -%% . -%% -%% `?GL_LINE_SMOOTH_HINT': `Params' returns one value, a symbolic constant indicating -%% the mode of the line antialiasing hint. The initial value is `?GL_DONT_CARE'. See {@link gl:hint/2} -%% . -%% -%% `?GL_LINE_WIDTH': `Params' returns one value, the line width as specified with {@link gl:lineWidth/1} -%% . The initial value is 1. -%% -%% `?GL_LAYER_PROVOKING_VERTEX': `Params' returns one value, the implementation -%% dependent specifc vertex of a primitive that is used to select the rendering layer. If -%% the value returned is equivalent to `?GL_PROVOKING_VERTEX', then the vertex selection -%% follows the convention specified by {@link gl:provokingVertex/1} . If the value returned -%% is equivalent to `?GL_FIRST_VERTEX_CONVENTION', then the selection is always taken -%% from the first vertex in the primitive. If the value returned is equivalent to `?GL_LAST_VERTEX_CONVENTION' -%% , then the selection is always taken from the last vertex in the primitive. If the value -%% returned is equivalent to `?GL_UNDEFINED_VERTEX', then the selection is not guaranteed -%% to be taken from any specific vertex in the primitive. -%% -%% `?GL_LINE_WIDTH_GRANULARITY': `Params' returns one value, the width difference -%% between adjacent supported widths for antialiased lines. See {@link gl:lineWidth/1} . -%% -%% `?GL_LINE_WIDTH_RANGE': `Params' returns two values: the smallest and largest -%% supported widths for antialiased lines. See {@link gl:lineWidth/1} . -%% -%% `?GL_LOGIC_OP_MODE': `Params' returns one value, a symbolic constant indicating -%% the selected logic operation mode. The initial value is `?GL_COPY'. See {@link gl:logicOp/1} -%% . -%% -%% `?GL_MAJOR_VERSION': `Params' returns one value, the major version number of -%% the OpenGL API supported by the current context. -%% -%% `?GL_MAX_3D_TEXTURE_SIZE': `Params' returns one value, a rough estimate of the -%% largest 3D texture that the GL can handle. The value must be at least 64. Use `?GL_PROXY_TEXTURE_3D' -%% to determine if a texture is too large. See {@link gl:texImage3D/10} . -%% -%% `?GL_MAX_ARRAY_TEXTURE_LAYERS': `Params' returns one value. The value indicates -%% the maximum number of layers allowed in an array texture, and must be at least 256. See {@link gl:texImage2D/9} -%% . -%% -%% `?GL_MAX_CLIP_DISTANCES': `Params' returns one value, the maximum number of -%% application-defined clipping distances. The value must be at least 8. -%% -%% `?GL_MAX_COLOR_TEXTURE_SAMPLES': `Params' returns one value, the maximum number -%% of samples in a color multisample texture. -%% -%% `?GL_MAX_COMBINED_ATOMIC_COUNTERS': `Params' returns a single value, the maximum -%% number of atomic counters available to all active shaders. -%% -%% `?GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS': `Params' returns one value, -%% the number of words for fragment shader uniform variables in all uniform blocks (including -%% default). The value must be at least 1. See {@link gl:uniform1f/2} . -%% -%% `?GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS': `Params' returns one value, -%% the number of words for geometry shader uniform variables in all uniform blocks (including -%% default). The value must be at least 1. See {@link gl:uniform1f/2} . -%% -%% `?GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS': `Params' returns one value, the maximum -%% supported texture image units that can be used to access texture maps from the vertex -%% shader and the fragment processor combined. If both the vertex shader and the fragment -%% processing stage access the same texture image unit, then that counts as using two texture -%% image units against this limit. The value must be at least 48. See {@link gl:activeTexture/1} -%% . -%% -%% `?GL_MAX_COMBINED_UNIFORM_BLOCKS': `Params' returns one value, the maximum number -%% of uniform blocks per program. The value must be at least 36. See {@link gl:uniformBlockBinding/3} -%% . -%% -%% `?GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS': `Params' returns one value, the -%% number of words for vertex shader uniform variables in all uniform blocks (including default). -%% The value must be at least 1. See {@link gl:uniform1f/2} . -%% -%% `?GL_MAX_CUBE_MAP_TEXTURE_SIZE': `Params' returns one value. The value gives -%% a rough estimate of the largest cube-map texture that the GL can handle. The value must -%% be at least 1024. Use `?GL_PROXY_TEXTURE_CUBE_MAP' to determine if a texture is too -%% large. See {@link gl:texImage2D/9} . -%% -%% `?GL_MAX_DEPTH_TEXTURE_SAMPLES': `Params' returns one value, the maximum number -%% of samples in a multisample depth or depth-stencil texture. -%% -%% `?GL_MAX_DRAW_BUFFERS': `Params' returns one value, the maximum number of simultaneous -%% outputs that may be written in a fragment shader. The value must be at least 8. See {@link gl:drawBuffers/1} -%% . -%% -%% `?GL_MAX_DUALSOURCE_DRAW_BUFFERS': `Params' returns one value, the maximum number -%% of active draw buffers when using dual-source blending. The value must be at least 1. -%% See {@link gl:blendFunc/2} and {@link gl:blendFuncSeparate/4} . -%% -%% `?GL_MAX_ELEMENTS_INDICES': `Params' returns one value, the recommended maximum -%% number of vertex array indices. See {@link gl:drawRangeElements/6} . -%% -%% `?GL_MAX_ELEMENTS_VERTICES': `Params' returns one value, the recommended maximum -%% number of vertex array vertices. See {@link gl:drawRangeElements/6} . -%% -%% `?GL_MAX_FRAGMENT_ATOMIC_COUNTERS': `Params' returns a single value, the maximum -%% number of atomic counters available to fragment shaders. -%% -%% `?GL_MAX_FRAGMENT_INPUT_COMPONENTS': `Params' returns one value, the maximum -%% number of components of the inputs read by the fragment shader, which must be at least -%% 128. -%% -%% `?GL_MAX_FRAGMENT_UNIFORM_COMPONENTS': `Params' returns one value, the maximum -%% number of individual floating-point, integer, or boolean values that can be held in uniform -%% variable storage for a fragment shader. The value must be at least 1024. See {@link gl:uniform1f/2} -%% . -%% -%% `?GL_MAX_FRAGMENT_UNIFORM_VECTORS': `Params' returns one value, the maximum -%% number of individual 4-vectors of floating-point, integer, or boolean values that can -%% be held in uniform variable storage for a fragment shader. The value is equal to the value -%% of `?GL_MAX_FRAGMENT_UNIFORM_COMPONENTS' divided by 4 and must be at least 256. See {@link gl:uniform1f/2} -%% . -%% -%% `?GL_MAX_FRAGMENT_UNIFORM_BLOCKS': `Params' returns one value, the maximum number -%% of uniform blocks per fragment shader. The value must be at least 12. See {@link gl:uniformBlockBinding/3} -%% . -%% -%% `?GL_MAX_GEOMETRY_ATOMIC_COUNTERS': `Params' returns a single value, the maximum -%% number of atomic counters available to geometry shaders. -%% -%% `?GL_MAX_GEOMETRY_INPUT_COMPONENTS': `Params' returns one value, the maximum -%% number of components of inputs read by a geometry shader, which must be at least 64. -%% -%% `?GL_MAX_GEOMETRY_OUTPUT_COMPONENTS': `Params' returns one value, the maximum -%% number of components of outputs written by a geometry shader, which must be at least 128. -%% -%% -%% `?GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS': `Params' returns one value, the maximum -%% supported texture image units that can be used to access texture maps from the geometry -%% shader. The value must be at least 16. See {@link gl:activeTexture/1} . -%% -%% `?GL_MAX_GEOMETRY_UNIFORM_BLOCKS': `Params' returns one value, the maximum number -%% of uniform blocks per geometry shader. The value must be at least 12. See {@link gl:uniformBlockBinding/3} -%% . -%% -%% `?GL_MAX_GEOMETRY_UNIFORM_COMPONENTS': `Params' returns one value, the maximum -%% number of individual floating-point, integer, or boolean values that can be held in uniform -%% variable storage for a geometry shader. The value must be at least 1024. See {@link gl:uniform1f/2} -%% . -%% -%% `?GL_MAX_INTEGER_SAMPLES': `Params' returns one value, the maximum number of -%% samples supported in integer format multisample buffers. -%% -%% `?GL_MIN_MAP_BUFFER_ALIGNMENT': `Params' returns one value, the minimum alignment -%% in basic machine units of pointers returned fromsee `glMapBuffer' and see `glMapBufferRange' -%% . This value must be a power of two and must be at least 64. -%% -%% `?GL_MAX_PROGRAM_TEXEL_OFFSET': `Params' returns one value, the maximum texel -%% offset allowed in a texture lookup, which must be at least 7. -%% -%% `?GL_MIN_PROGRAM_TEXEL_OFFSET': `Params' returns one value, the minimum texel -%% offset allowed in a texture lookup, which must be at most -8. -%% -%% `?GL_MAX_RECTANGLE_TEXTURE_SIZE': `Params' returns one value. The value gives -%% a rough estimate of the largest rectangular texture that the GL can handle. The value -%% must be at least 1024. Use `?GL_PROXY_RECTANGLE_TEXTURE' to determine if a texture -%% is too large. See {@link gl:texImage2D/9} . -%% -%% `?GL_MAX_RENDERBUFFER_SIZE': `Params' returns one value. The value indicates -%% the maximum supported size for renderbuffers. See {@link gl:framebufferRenderbuffer/4} . -%% -%% `?GL_MAX_SAMPLE_MASK_WORDS': `Params' returns one value, the maximum number -%% of sample mask words. -%% -%% `?GL_MAX_SERVER_WAIT_TIMEOUT': `Params' returns one value, the maximum {@link gl:waitSync/3} -%% timeout interval. -%% -%% `?GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS': `Params' returns a single value, the -%% maximum number of atomic counters available to tessellation control shaders. -%% -%% `?GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS': `Params' returns a single value, -%% the maximum number of atomic counters available to tessellation evaluation shaders. -%% -%% `?GL_MAX_TEXTURE_BUFFER_SIZE': `Params' returns one value. The value gives the -%% maximum number of texels allowed in the texel array of a texture buffer object. Value -%% must be at least 65536. -%% -%% `?GL_MAX_TEXTURE_IMAGE_UNITS': `Params' returns one value, the maximum supported -%% texture image units that can be used to access texture maps from the fragment shader. -%% The value must be at least 16. See {@link gl:activeTexture/1} . -%% -%% `?GL_MAX_TEXTURE_LOD_BIAS': `Params' returns one value, the maximum, absolute -%% value of the texture level-of-detail bias. The value must be at least 2.0. -%% -%% `?GL_MAX_TEXTURE_SIZE': `Params' returns one value. The value gives a rough -%% estimate of the largest texture that the GL can handle. The value must be at least 1024. -%% Use a proxy texture target such as `?GL_PROXY_TEXTURE_1D' or `?GL_PROXY_TEXTURE_2D' -%% to determine if a texture is too large. See {@link gl:texImage1D/8} and {@link gl:texImage2D/9} -%% . -%% -%% `?GL_MAX_UNIFORM_BUFFER_BINDINGS': `Params' returns one value, the maximum number -%% of uniform buffer binding points on the context, which must be at least 36. -%% -%% `?GL_MAX_UNIFORM_BLOCK_SIZE': `Params' returns one value, the maximum size in -%% basic machine units of a uniform block, which must be at least 16384. -%% -%% `?GL_MAX_VARYING_COMPONENTS': `Params' returns one value, the number components -%% for varying variables, which must be at least 60. -%% -%% `?GL_MAX_VARYING_VECTORS': `Params' returns one value, the number 4-vectors -%% for varying variables, which is equal to the value of `?GL_MAX_VARYING_COMPONENTS' -%% and must be at least 15. -%% -%% `?GL_MAX_VARYING_FLOATS': `Params' returns one value, the maximum number of -%% interpolators available for processing varying variables used by vertex and fragment shaders. -%% This value represents the number of individual floating-point values that can be interpolated; -%% varying variables declared as vectors, matrices, and arrays will all consume multiple -%% interpolators. The value must be at least 32. -%% -%% `?GL_MAX_VERTEX_ATOMIC_COUNTERS': `Params' returns a single value, the maximum -%% number of atomic counters available to vertex shaders. -%% -%% `?GL_MAX_VERTEX_ATTRIBS': `Params' returns one value, the maximum number of -%% 4-component generic vertex attributes accessible to a vertex shader. The value must be -%% at least 16. See {@link gl:vertexAttrib1d/2} . -%% -%% `?GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS': `Params' returns one value, the maximum -%% supported texture image units that can be used to access texture maps from the vertex -%% shader. The value may be at least 16. See {@link gl:activeTexture/1} . -%% -%% `?GL_MAX_VERTEX_UNIFORM_COMPONENTS': `Params' returns one value, the maximum -%% number of individual floating-point, integer, or boolean values that can be held in uniform -%% variable storage for a vertex shader. The value must be at least 1024. See {@link gl:uniform1f/2} -%% . -%% -%% `?GL_MAX_VERTEX_UNIFORM_VECTORS': `Params' returns one value, the maximum number -%% of 4-vectors that may be held in uniform variable storage for the vertex shader. The value -%% of `?GL_MAX_VERTEX_UNIFORM_VECTORS' is equal to the value of `?GL_MAX_VERTEX_UNIFORM_COMPONENTS' -%% and must be at least 256. -%% -%% `?GL_MAX_VERTEX_OUTPUT_COMPONENTS': `Params' returns one value, the maximum -%% number of components of output written by a vertex shader, which must be at least 64. -%% -%% `?GL_MAX_VERTEX_UNIFORM_BLOCKS': `Params' returns one value, the maximum number -%% of uniform blocks per vertex shader. The value must be at least 12. See {@link gl:uniformBlockBinding/3} -%% . -%% -%% `?GL_MAX_VIEWPORT_DIMS': `Params' returns two values: the maximum supported -%% width and height of the viewport. These must be at least as large as the visible dimensions -%% of the display being rendered to. See {@link gl:viewport/4} . -%% -%% `?GL_MAX_VIEWPORTS': `Params' returns one value, the maximum number of simultaneous -%% viewports that are supported. The value must be at least 16. See {@link gl:viewportIndexedf/5} -%% . -%% -%% `?GL_MINOR_VERSION': `Params' returns one value, the minor version number of -%% the OpenGL API supported by the current context. -%% -%% `?GL_NUM_COMPRESSED_TEXTURE_FORMATS': `Params' returns a single integer value -%% indicating the number of available compressed texture formats. The minimum value is 4. -%% See {@link gl:compressedTexImage2D/8} . -%% -%% `?GL_NUM_EXTENSIONS': `Params' returns one value, the number of extensions supported -%% by the GL implementation for the current context. See {@link gl:getString/1} . -%% -%% `?GL_NUM_PROGRAM_BINARY_FORMATS': `Params' returns one value, the number of -%% program binary formats supported by the implementation. -%% -%% `?GL_NUM_SHADER_BINARY_FORMATS': `Params' returns one value, the number of binary -%% shader formats supported by the implementation. If this value is greater than zero, then -%% the implementation supports loading binary shaders. If it is zero, then the loading of -%% binary shaders by the implementation is not supported. -%% -%% `?GL_PACK_ALIGNMENT': `Params' returns one value, the byte alignment used for -%% writing pixel data to memory. The initial value is 4. See {@link gl:pixelStoref/2} . -%% -%% `?GL_PACK_IMAGE_HEIGHT': `Params' returns one value, the image height used for -%% writing pixel data to memory. The initial value is 0. See {@link gl:pixelStoref/2} . -%% -%% `?GL_PACK_LSB_FIRST': `Params' returns a single boolean value indicating whether -%% single-bit pixels being written to memory are written first to the least significant bit -%% of each unsigned byte. The initial value is `?GL_FALSE'. See {@link gl:pixelStoref/2} . -%% -%% -%% `?GL_PACK_ROW_LENGTH': `Params' returns one value, the row length used for writing -%% pixel data to memory. The initial value is 0. See {@link gl:pixelStoref/2} . -%% -%% `?GL_PACK_SKIP_IMAGES': `Params' returns one value, the number of pixel images -%% skipped before the first pixel is written into memory. The initial value is 0. See {@link gl:pixelStoref/2} -%% . -%% -%% `?GL_PACK_SKIP_PIXELS': `Params' returns one value, the number of pixel locations -%% skipped before the first pixel is written into memory. The initial value is 0. See {@link gl:pixelStoref/2} -%% . -%% -%% `?GL_PACK_SKIP_ROWS': `Params' returns one value, the number of rows of pixel -%% locations skipped before the first pixel is written into memory. The initial value is -%% 0. See {@link gl:pixelStoref/2} . -%% -%% `?GL_PACK_SWAP_BYTES': `Params' returns a single boolean value indicating whether -%% the bytes of two-byte and four-byte pixel indices and components are swapped before being -%% written to memory. The initial value is `?GL_FALSE'. See {@link gl:pixelStoref/2} . -%% -%% `?GL_PIXEL_PACK_BUFFER_BINDING': `Params' returns a single value, the name of -%% the buffer object currently bound to the target `?GL_PIXEL_PACK_BUFFER'. If no buffer -%% object is bound to this target, 0 is returned. The initial value is 0. See {@link gl:bindBuffer/2} -%% . -%% -%% `?GL_PIXEL_UNPACK_BUFFER_BINDING': `Params' returns a single value, the name -%% of the buffer object currently bound to the target `?GL_PIXEL_UNPACK_BUFFER'. If -%% no buffer object is bound to this target, 0 is returned. The initial value is 0. See {@link gl:bindBuffer/2} -%% . -%% -%% `?GL_POINT_FADE_THRESHOLD_SIZE': `Params' returns one value, the point size -%% threshold for determining the point size. See {@link gl:pointParameterf/2} . -%% -%% `?GL_PRIMITIVE_RESTART_INDEX': `Params' returns one value, the current primitive -%% restart index. The initial value is 0. See {@link gl:primitiveRestartIndex/1} . -%% -%% `?GL_PROGRAM_BINARY_FORMATS': `Params' an array of `?GL_NUM_PROGRAM_BINARY_FORMATS' -%% values, indicating the proram binary formats supported by the implementation. -%% -%% `?GL_PROGRAM_PIPELINE_BINDING': `Params' a single value, the name of the currently -%% bound program pipeline object, or zero if no program pipeline object is bound. See {@link gl:bindProgramPipeline/1} -%% . -%% -%% `?GL_PROVOKING_VERTEX': `Params' returns one value, the currently selected provoking -%% vertex convention. The initial value is `?GL_LAST_VERTEX_CONVENTION'. See {@link gl:provokingVertex/1} -%% . -%% -%% `?GL_POINT_SIZE': `Params' returns one value, the point size as specified by {@link gl:pointSize/1} -%% . The initial value is 1. -%% -%% `?GL_POINT_SIZE_GRANULARITY': `Params' returns one value, the size difference -%% between adjacent supported sizes for antialiased points. See {@link gl:pointSize/1} . -%% -%% `?GL_POINT_SIZE_RANGE': `Params' returns two values: the smallest and largest -%% supported sizes for antialiased points. The smallest size must be at most 1, and the largest -%% size must be at least 1. See {@link gl:pointSize/1} . -%% -%% `?GL_POLYGON_OFFSET_FACTOR': `Params' returns one value, the scaling factor -%% used to determine the variable offset that is added to the depth value of each fragment -%% generated when a polygon is rasterized. The initial value is 0. See {@link gl:polygonOffset/2} -%% . -%% -%% `?GL_POLYGON_OFFSET_UNITS': `Params' returns one value. This value is multiplied -%% by an implementation-specific value and then added to the depth value of each fragment -%% generated when a polygon is rasterized. The initial value is 0. See {@link gl:polygonOffset/2} -%% . -%% -%% `?GL_POLYGON_OFFSET_FILL': `Params' returns a single boolean value indicating -%% whether polygon offset is enabled for polygons in fill mode. The initial value is `?GL_FALSE' -%% . See {@link gl:polygonOffset/2} . -%% -%% `?GL_POLYGON_OFFSET_LINE': `Params' returns a single boolean value indicating -%% whether polygon offset is enabled for polygons in line mode. The initial value is `?GL_FALSE' -%% . See {@link gl:polygonOffset/2} . -%% -%% `?GL_POLYGON_OFFSET_POINT': `Params' returns a single boolean value indicating -%% whether polygon offset is enabled for polygons in point mode. The initial value is `?GL_FALSE' -%% . See {@link gl:polygonOffset/2} . -%% -%% `?GL_POLYGON_SMOOTH': `Params' returns a single boolean value indicating whether -%% antialiasing of polygons is enabled. The initial value is `?GL_FALSE'. See {@link gl:polygonMode/2} -%% . -%% -%% `?GL_POLYGON_SMOOTH_HINT': `Params' returns one value, a symbolic constant indicating -%% the mode of the polygon antialiasing hint. The initial value is `?GL_DONT_CARE'. -%% See {@link gl:hint/2} . -%% -%% `?GL_READ_BUFFER': `Params' returns one value, a symbolic constant indicating -%% which color buffer is selected for reading. The initial value is `?GL_BACK' if there -%% is a back buffer, otherwise it is `?GL_FRONT'. See {@link gl:readPixels/7} . -%% -%% `?GL_RENDERBUFFER_BINDING': `Params' returns a single value, the name of the -%% renderbuffer object currently bound to the target `?GL_RENDERBUFFER'. If no renderbuffer -%% object is bound to this target, 0 is returned. The initial value is 0. See {@link gl:bindRenderbuffer/2} -%% . -%% -%% `?GL_SAMPLE_BUFFERS': `Params' returns a single integer value indicating the -%% number of sample buffers associated with the framebuffer. See {@link gl:sampleCoverage/2} . -%% -%% -%% `?GL_SAMPLE_COVERAGE_VALUE': `Params' returns a single positive floating-point -%% value indicating the current sample coverage value. See {@link gl:sampleCoverage/2} . -%% -%% `?GL_SAMPLE_COVERAGE_INVERT': `Params' returns a single boolean value indicating -%% if the temporary coverage value should be inverted. See {@link gl:sampleCoverage/2} . -%% -%% `?GL_SAMPLER_BINDING': `Params' returns a single value, the name of the sampler -%% object currently bound to the active texture unit. The initial value is 0. See {@link gl:bindSampler/2} -%% . -%% -%% `?GL_SAMPLES': `Params' returns a single integer value indicating the coverage -%% mask size. See {@link gl:sampleCoverage/2} . -%% -%% `?GL_SCISSOR_BOX': `Params' returns four values: the x and y window coordinates -%% of the scissor box, followed by its width and height. Initially the x and y window -%% coordinates are both 0 and the width and height are set to the size of the window. See {@link gl:scissor/4} -%% . -%% -%% `?GL_SCISSOR_TEST': `Params' returns a single boolean value indicating whether -%% scissoring is enabled. The initial value is `?GL_FALSE'. See {@link gl:scissor/4} . -%% -%% `?GL_SHADER_COMPILER': `Params' returns a single boolean value indicating whether -%% an online shader compiler is present in the implementation. All desktop OpenGL implementations -%% must support online shader compilations, and therefore the value of `?GL_SHADER_COMPILER' -%% will always be `?GL_TRUE'. -%% -%% `?GL_SMOOTH_LINE_WIDTH_RANGE': `Params' returns a pair of values indicating -%% the range of widths supported for smooth (antialiased) lines. See {@link gl:lineWidth/1} . -%% -%% `?GL_SMOOTH_LINE_WIDTH_GRANULARITY': `Params' returns a single value indicating -%% the level of quantization applied to smooth line width parameters. -%% -%% `?GL_STENCIL_BACK_FAIL': `Params' returns one value, a symbolic constant indicating -%% what action is taken for back-facing polygons when the stencil test fails. The initial -%% value is `?GL_KEEP'. See {@link gl:stencilOpSeparate/4} . -%% -%% `?GL_STENCIL_BACK_FUNC': `Params' returns one value, a symbolic constant indicating -%% what function is used for back-facing polygons to compare the stencil reference value -%% with the stencil buffer value. The initial value is `?GL_ALWAYS'. See {@link gl:stencilFuncSeparate/4} -%% . -%% -%% `?GL_STENCIL_BACK_PASS_DEPTH_FAIL': `Params' returns one value, a symbolic constant -%% indicating what action is taken for back-facing polygons when the stencil test passes, -%% but the depth test fails. The initial value is `?GL_KEEP'. See {@link gl:stencilOpSeparate/4} -%% . -%% -%% `?GL_STENCIL_BACK_PASS_DEPTH_PASS': `Params' returns one value, a symbolic constant -%% indicating what action is taken for back-facing polygons when the stencil test passes -%% and the depth test passes. The initial value is `?GL_KEEP'. See {@link gl:stencilOpSeparate/4} -%% . -%% -%% `?GL_STENCIL_BACK_REF': `Params' returns one value, the reference value that -%% is compared with the contents of the stencil buffer for back-facing polygons. The initial -%% value is 0. See {@link gl:stencilFuncSeparate/4} . -%% -%% `?GL_STENCIL_BACK_VALUE_MASK': `Params' returns one value, the mask that is -%% used for back-facing polygons to mask both the stencil reference value and the stencil -%% buffer value before they are compared. The initial value is all 1's. See {@link gl:stencilFuncSeparate/4} -%% . -%% -%% `?GL_STENCIL_BACK_WRITEMASK': `Params' returns one value, the mask that controls -%% writing of the stencil bitplanes for back-facing polygons. The initial value is all 1's. -%% See {@link gl:stencilMaskSeparate/2} . -%% -%% `?GL_STENCIL_CLEAR_VALUE': `Params' returns one value, the index to which the -%% stencil bitplanes are cleared. The initial value is 0. See {@link gl:clearStencil/1} . -%% -%% `?GL_STENCIL_FAIL': `Params' returns one value, a symbolic constant indicating -%% what action is taken when the stencil test fails. The initial value is `?GL_KEEP'. -%% See {@link gl:stencilOp/3} . This stencil state only affects non-polygons and front-facing -%% polygons. Back-facing polygons use separate stencil state. See {@link gl:stencilOpSeparate/4} -%% . -%% -%% `?GL_STENCIL_FUNC': `Params' returns one value, a symbolic constant indicating -%% what function is used to compare the stencil reference value with the stencil buffer value. -%% The initial value is `?GL_ALWAYS'. See {@link gl:stencilFunc/3} . This stencil state -%% only affects non-polygons and front-facing polygons. Back-facing polygons use separate -%% stencil state. See {@link gl:stencilFuncSeparate/4} . -%% -%% `?GL_STENCIL_PASS_DEPTH_FAIL': `Params' returns one value, a symbolic constant -%% indicating what action is taken when the stencil test passes, but the depth test fails. -%% The initial value is `?GL_KEEP'. See {@link gl:stencilOp/3} . This stencil state only -%% affects non-polygons and front-facing polygons. Back-facing polygons use separate stencil -%% state. See {@link gl:stencilOpSeparate/4} . -%% -%% `?GL_STENCIL_PASS_DEPTH_PASS': `Params' returns one value, a symbolic constant -%% indicating what action is taken when the stencil test passes and the depth test passes. -%% The initial value is `?GL_KEEP'. See {@link gl:stencilOp/3} . This stencil state only -%% affects non-polygons and front-facing polygons. Back-facing polygons use separate stencil -%% state. See {@link gl:stencilOpSeparate/4} . -%% -%% `?GL_STENCIL_REF': `Params' returns one value, the reference value that is compared -%% with the contents of the stencil buffer. The initial value is 0. See {@link gl:stencilFunc/3} -%% . This stencil state only affects non-polygons and front-facing polygons. Back-facing -%% polygons use separate stencil state. See {@link gl:stencilFuncSeparate/4} . -%% -%% `?GL_STENCIL_TEST': `Params' returns a single boolean value indicating whether -%% stencil testing of fragments is enabled. The initial value is `?GL_FALSE'. See {@link gl:stencilFunc/3} -%% and {@link gl:stencilOp/3} . -%% -%% `?GL_STENCIL_VALUE_MASK': `Params' returns one value, the mask that is used -%% to mask both the stencil reference value and the stencil buffer value before they are -%% compared. The initial value is all 1's. See {@link gl:stencilFunc/3} . This stencil state -%% only affects non-polygons and front-facing polygons. Back-facing polygons use separate -%% stencil state. See {@link gl:stencilFuncSeparate/4} . -%% -%% `?GL_STENCIL_WRITEMASK': `Params' returns one value, the mask that controls -%% writing of the stencil bitplanes. The initial value is all 1's. See {@link gl:stencilMask/1} -%% . This stencil state only affects non-polygons and front-facing polygons. Back-facing -%% polygons use separate stencil state. See {@link gl:stencilMaskSeparate/2} . -%% -%% `?GL_STEREO': `Params' returns a single boolean value indicating whether stereo -%% buffers (left and right) are supported. -%% -%% `?GL_SUBPIXEL_BITS': `Params' returns one value, an estimate of the number of -%% bits of subpixel resolution that are used to position rasterized geometry in window coordinates. -%% The value must be at least 4. -%% -%% `?GL_TEXTURE_BINDING_1D': `Params' returns a single value, the name of the texture -%% currently bound to the target `?GL_TEXTURE_1D'. The initial value is 0. See {@link gl:bindTexture/2} -%% . -%% -%% `?GL_TEXTURE_BINDING_1D_ARRAY': `Params' returns a single value, the name of -%% the texture currently bound to the target `?GL_TEXTURE_1D_ARRAY'. The initial value -%% is 0. See {@link gl:bindTexture/2} . -%% -%% `?GL_TEXTURE_BINDING_2D': `Params' returns a single value, the name of the texture -%% currently bound to the target `?GL_TEXTURE_2D'. The initial value is 0. See {@link gl:bindTexture/2} -%% . -%% -%% `?GL_TEXTURE_BINDING_2D_ARRAY': `Params' returns a single value, the name of -%% the texture currently bound to the target `?GL_TEXTURE_2D_ARRAY'. The initial value -%% is 0. See {@link gl:bindTexture/2} . -%% -%% `?GL_TEXTURE_BINDING_2D_MULTISAMPLE': `Params' returns a single value, the name -%% of the texture currently bound to the target `?GL_TEXTURE_2D_MULTISAMPLE'. The initial -%% value is 0. See {@link gl:bindTexture/2} . -%% -%% `?GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY': `Params' returns a single value, -%% the name of the texture currently bound to the target `?GL_TEXTURE_2D_MULTISAMPLE_ARRAY' -%% . The initial value is 0. See {@link gl:bindTexture/2} . -%% -%% `?GL_TEXTURE_BINDING_3D': `Params' returns a single value, the name of the texture -%% currently bound to the target `?GL_TEXTURE_3D'. The initial value is 0. See {@link gl:bindTexture/2} -%% . -%% -%% `?GL_TEXTURE_BINDING_BUFFER': `Params' returns a single value, the name of the -%% texture currently bound to the target `?GL_TEXTURE_BUFFER'. The initial value is -%% 0. See {@link gl:bindTexture/2} . -%% -%% `?GL_TEXTURE_BINDING_CUBE_MAP': `Params' returns a single value, the name of -%% the texture currently bound to the target `?GL_TEXTURE_CUBE_MAP'. The initial value -%% is 0. See {@link gl:bindTexture/2} . -%% -%% `?GL_TEXTURE_BINDING_RECTANGLE': `Params' returns a single value, the name of -%% the texture currently bound to the target `?GL_TEXTURE_RECTANGLE'. The initial value -%% is 0. See {@link gl:bindTexture/2} . -%% -%% `?GL_TEXTURE_COMPRESSION_HINT': `Params' returns a single value indicating the -%% mode of the texture compression hint. The initial value is `?GL_DONT_CARE'. -%% -%% `?GL_TEXTURE_BUFFER_BINDING': `Params' returns a single value, the name of the -%% texture buffer object currently bound. The initial value is 0. See {@link gl:bindBuffer/2} . -%% -%% -%% `?GL_TIMESTAMP': `Params' returns a single value, the 64-bit value of the current -%% GL time. See {@link gl:queryCounter/2} . -%% -%% `?GL_TRANSFORM_FEEDBACK_BUFFER_BINDING': When used with non-indexed variants of ``gl:get'' -%% (such as ``gl:getIntegerv''), `Params' returns a single value, the name of the -%% buffer object currently bound to the target `?GL_TRANSFORM_FEEDBACK_BUFFER'. If no -%% buffer object is bound to this target, 0 is returned. When used with indexed variants of ``gl:get'' -%% (such as ``gl:getIntegeri_v''), `Params' returns a single value, the name of the -%% buffer object bound to the indexed transform feedback attribute stream. The initial value -%% is 0 for all targets. See {@link gl:bindBuffer/2} , {@link gl:bindBufferBase/3} , and {@link gl:bindBufferRange/5} -%% . -%% -%% `?GL_TRANSFORM_FEEDBACK_BUFFER_START': When used with indexed variants of ``gl:get'' -%% (such as ``gl:getInteger64i_v''), `Params' returns a single value, the start offset -%% of the binding range for each transform feedback attribute stream. The initial value is -%% 0 for all streams. See {@link gl:bindBufferRange/5} . -%% -%% `?GL_TRANSFORM_FEEDBACK_BUFFER_SIZE': When used with indexed variants of ``gl:get'' -%% (such as ``gl:getInteger64i_v''), `Params' returns a single value, the size of -%% the binding range for each transform feedback attribute stream. The initial value is 0 -%% for all streams. See {@link gl:bindBufferRange/5} . -%% -%% `?GL_UNIFORM_BUFFER_BINDING': When used with non-indexed variants of ``gl:get'' -%% (such as ``gl:getIntegerv''), `Params' returns a single value, the name of the -%% buffer object currently bound to the target `?GL_UNIFORM_BUFFER'. If no buffer object -%% is bound to this target, 0 is returned. When used with indexed variants of ``gl:get'' -%% (such as ``gl:getIntegeri_v''), `Params' returns a single value, the name of the -%% buffer object bound to the indexed uniform buffer binding point. The initial value is -%% 0 for all targets. See {@link gl:bindBuffer/2} , {@link gl:bindBufferBase/3} , and {@link gl:bindBufferRange/5} -%% . -%% -%% `?GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT': `Params' returns a single value, the -%% minimum required alignment for uniform buffer sizes and offset. The initial value is 1. -%% See {@link gl:uniformBlockBinding/3} . -%% -%% `?GL_UNIFORM_BUFFER_SIZE': When used with indexed variants of ``gl:get'' (such -%% as ``gl:getInteger64i_v''), `Params' returns a single value, the size of the binding -%% range for each indexed uniform buffer binding. The initial value is 0 for all bindings. -%% See {@link gl:bindBufferRange/5} . -%% -%% `?GL_UNIFORM_BUFFER_START': When used with indexed variants of ``gl:get'' (such -%% as ``gl:getInteger64i_v''), `Params' returns a single value, the start offset of -%% the binding range for each indexed uniform buffer binding. The initial value is 0 for -%% all bindings. See {@link gl:bindBufferRange/5} . -%% -%% `?GL_UNPACK_ALIGNMENT': `Params' returns one value, the byte alignment used -%% for reading pixel data from memory. The initial value is 4. See {@link gl:pixelStoref/2} . -%% -%% `?GL_UNPACK_IMAGE_HEIGHT': `Params' returns one value, the image height used -%% for reading pixel data from memory. The initial is 0. See {@link gl:pixelStoref/2} . -%% -%% `?GL_UNPACK_LSB_FIRST': `Params' returns a single boolean value indicating whether -%% single-bit pixels being read from memory are read first from the least significant bit -%% of each unsigned byte. The initial value is `?GL_FALSE'. See {@link gl:pixelStoref/2} . -%% -%% -%% `?GL_UNPACK_ROW_LENGTH': `Params' returns one value, the row length used for -%% reading pixel data from memory. The initial value is 0. See {@link gl:pixelStoref/2} . -%% -%% `?GL_UNPACK_SKIP_IMAGES': `Params' returns one value, the number of pixel images -%% skipped before the first pixel is read from memory. The initial value is 0. See {@link gl:pixelStoref/2} -%% . -%% -%% `?GL_UNPACK_SKIP_PIXELS': `Params' returns one value, the number of pixel locations -%% skipped before the first pixel is read from memory. The initial value is 0. See {@link gl:pixelStoref/2} -%% . -%% -%% `?GL_UNPACK_SKIP_ROWS': `Params' returns one value, the number of rows of pixel -%% locations skipped before the first pixel is read from memory. The initial value is 0. -%% See {@link gl:pixelStoref/2} . -%% -%% `?GL_UNPACK_SWAP_BYTES': `Params' returns a single boolean value indicating -%% whether the bytes of two-byte and four-byte pixel indices and components are swapped after -%% being read from memory. The initial value is `?GL_FALSE'. See {@link gl:pixelStoref/2} . -%% -%% -%% `?GL_VERTEX_PROGRAM_POINT_SIZE': `Params' returns a single boolean value indicating -%% whether vertex program point size mode is enabled. If enabled, and a vertex shader is -%% active, then the point size is taken from the shader built-in gl_PointSize. If disabled, -%% and a vertex shader is active, then the point size is taken from the point state as specified -%% by {@link gl:pointSize/1} . The initial value is `?GL_FALSE'. -%% -%% `?GL_VIEWPORT': When used with non-indexed variants of ``gl:get'' (such as ``gl:getIntegerv'' -%% ), `Params' returns four values: the x and y window coordinates of the viewport, -%% followed by its width and height. Initially the x and y window coordinates are both -%% set to 0, and the width and height are set to the width and height of the window into -%% which the GL will do its rendering. See {@link gl:viewport/4} . When used with indexed -%% variants of ``gl:get'' (such as ``gl:getIntegeri_v''), `Params' returns four -%% values: the x and y window coordinates of the indexed viewport, followed by its width -%% and height. Initially the x and y window coordinates are both set to 0, and the width -%% and height are set to the width and height of the window into which the GL will do its -%% rendering. See {@link gl:viewportIndexedf/5} . -%% -%% `?GL_VIEWPORT_BOUNDS_RANGE': `Params' returns two values, the minimum and maximum -%% viewport bounds range. The minimum range should be at least [-32768, 32767]. -%% -%% `?GL_VIEWPORT_INDEX_PROVOKING_VERTEX': `Params' returns one value, the implementation -%% dependent specifc vertex of a primitive that is used to select the viewport index. If -%% the value returned is equivalent to `?GL_PROVOKING_VERTEX', then the vertex selection -%% follows the convention specified by {@link gl:provokingVertex/1} . If the value returned -%% is equivalent to `?GL_FIRST_VERTEX_CONVENTION', then the selection is always taken -%% from the first vertex in the primitive. If the value returned is equivalent to `?GL_LAST_VERTEX_CONVENTION' -%% , then the selection is always taken from the last vertex in the primitive. If the value -%% returned is equivalent to `?GL_UNDEFINED_VERTEX', then the selection is not guaranteed -%% to be taken from any specific vertex in the primitive. -%% -%% `?GL_VIEWPORT_SUBPIXEL_BITS': `Params' returns a single value, the number of -%% bits of sub-pixel precision which the GL uses to interpret the floating point viewport -%% bounds. The minimum value is 0. -%% -%% Many of the boolean parameters can also be queried more easily using {@link gl:isEnabled/1} -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGet.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGet.xhtml">external</a> documentation. -spec getBooleanv(Pname) -> [0|1] when Pname :: enum(). getBooleanv(Pname) -> call(5065, <<Pname:?GLenum>>). @@ -1968,131 +698,7 @@ getIntegerv(Pname) -> %% together. The special mask `?GL_ALL_ATTRIB_BITS' can be used to save all stackable %% states. %% -%% The symbolic mask constants and their associated GL state are as follows (the second -%% column lists which attributes are saved): -%% -%% <table><tbody><tr><td>`?GL_ACCUM_BUFFER_BIT'</td><td> Accumulation buffer clear value -%% </td></tr><tr><td>`?GL_COLOR_BUFFER_BIT'</td><td>`?GL_ALPHA_TEST' enable bit </td> -%% </tr><tr><td></td><td> Alpha test function and reference value </td></tr><tr><td></td><td> -%% `?GL_BLEND' enable bit </td></tr><tr><td></td><td> Blending source and destination -%% functions </td></tr><tr><td></td><td> Constant blend color </td></tr><tr><td></td><td> -%% Blending equation </td></tr><tr><td></td><td>`?GL_DITHER' enable bit </td></tr><tr><td> -%% </td><td>`?GL_DRAW_BUFFER' setting </td></tr><tr><td></td><td>`?GL_COLOR_LOGIC_OP' -%% enable bit </td></tr><tr><td></td><td>`?GL_INDEX_LOGIC_OP' enable bit </td></tr><tr> -%% <td></td><td> Logic op function </td></tr><tr><td></td><td> Color mode and index mode -%% clear values </td></tr><tr><td></td><td> Color mode and index mode writemasks </td></tr><tr> -%% <td>`?GL_CURRENT_BIT'</td><td> Current RGBA color </td></tr><tr><td></td><td> Current -%% color index </td></tr><tr><td></td><td> Current normal vector </td></tr><tr><td></td><td> -%% Current texture coordinates </td></tr><tr><td></td><td> Current raster position </td></tr> -%% <tr><td></td><td>`?GL_CURRENT_RASTER_POSITION_VALID' flag </td></tr><tr><td></td><td> -%% RGBA color associated with current raster position </td></tr><tr><td></td><td> Color -%% index associated with current raster position </td></tr><tr><td></td><td> Texture coordinates -%% associated with current raster position </td></tr><tr><td></td><td>`?GL_EDGE_FLAG' -%% flag </td></tr><tr><td>`?GL_DEPTH_BUFFER_BIT'</td><td>`?GL_DEPTH_TEST' enable -%% bit </td></tr><tr><td></td><td> Depth buffer test function </td></tr><tr><td></td><td> -%% Depth buffer clear value </td></tr><tr><td></td><td>`?GL_DEPTH_WRITEMASK' enable -%% bit </td></tr><tr><td>`?GL_ENABLE_BIT'</td><td>`?GL_ALPHA_TEST' flag </td></tr><tr> -%% <td></td><td>`?GL_AUTO_NORMAL' flag </td></tr><tr><td></td><td>`?GL_BLEND' flag -%% </td></tr><tr><td></td><td> Enable bits for the user-definable clipping planes </td></tr><tr> -%% <td></td><td>`?GL_COLOR_MATERIAL'</td></tr><tr><td></td><td>`?GL_CULL_FACE' -%% flag </td></tr><tr><td></td><td>`?GL_DEPTH_TEST' flag </td></tr><tr><td></td><td>`?GL_DITHER' -%% flag </td></tr><tr><td></td><td>`?GL_FOG' flag </td></tr><tr><td></td><td>`?GL_LIGHT' -%% `i' where `?0' <= `i' < `?GL_MAX_LIGHTS'</td></tr> -%% <tr><td></td><td>`?GL_LIGHTING' flag </td></tr><tr><td></td><td>`?GL_LINE_SMOOTH' -%% flag </td></tr><tr><td></td><td>`?GL_LINE_STIPPLE' flag </td></tr><tr><td></td><td>`?GL_COLOR_LOGIC_OP' -%% flag </td></tr><tr><td></td><td>`?GL_INDEX_LOGIC_OP' flag </td></tr><tr><td></td><td> -%% `?GL_MAP1_'`x' where `x' is a map type </td></tr><tr><td></td><td>`?GL_MAP2_' -%% `x' where `x' is a map type </td></tr><tr><td></td><td>`?GL_MULTISAMPLE' -%% flag </td></tr><tr><td></td><td>`?GL_NORMALIZE' flag </td></tr><tr><td></td><td>`?GL_POINT_SMOOTH' -%% flag </td></tr><tr><td></td><td>`?GL_POLYGON_OFFSET_LINE' flag </td></tr><tr><td></td> -%% <td>`?GL_POLYGON_OFFSET_FILL' flag </td></tr><tr><td></td><td>`?GL_POLYGON_OFFSET_POINT' -%% flag </td></tr><tr><td></td><td>`?GL_POLYGON_SMOOTH' flag </td></tr><tr><td></td><td> -%% `?GL_POLYGON_STIPPLE' flag </td></tr><tr><td></td><td>`?GL_SAMPLE_ALPHA_TO_COVERAGE' -%% flag </td></tr><tr><td></td><td>`?GL_SAMPLE_ALPHA_TO_ONE' flag </td></tr><tr><td></td> -%% <td>`?GL_SAMPLE_COVERAGE' flag </td></tr><tr><td></td><td>`?GL_SCISSOR_TEST' -%% flag </td></tr><tr><td></td><td>`?GL_STENCIL_TEST' flag </td></tr><tr><td></td><td>`?GL_TEXTURE_1D' -%% flag </td></tr><tr><td></td><td>`?GL_TEXTURE_2D' flag </td></tr><tr><td></td><td>`?GL_TEXTURE_3D' -%% flag </td></tr><tr><td></td><td> Flags `?GL_TEXTURE_GEN_'`x' where `x' -%% is S, T, R, or Q </td></tr><tr><td>`?GL_EVAL_BIT'</td><td>`?GL_MAP1_'`x' -%% enable bits, where `x' is a map type </td></tr><tr><td></td><td>`?GL_MAP2_'`x' -%% enable bits, where `x' is a map type </td></tr><tr><td></td><td> 1D grid endpoints -%% and divisions </td></tr><tr><td></td><td> 2D grid endpoints and divisions </td></tr><tr><td> -%% </td><td>`?GL_AUTO_NORMAL' enable bit </td></tr><tr><td>`?GL_FOG_BIT'</td><td>`?GL_FOG' -%% enable bit </td></tr><tr><td></td><td> Fog color </td></tr><tr><td></td><td> Fog density -%% </td></tr><tr><td></td><td> Linear fog start </td></tr><tr><td></td><td> Linear fog end </td> -%% </tr><tr><td></td><td> Fog index </td></tr><tr><td></td><td>`?GL_FOG_MODE' value </td> -%% </tr><tr><td>`?GL_HINT_BIT'</td><td>`?GL_PERSPECTIVE_CORRECTION_HINT' setting </td> -%% </tr><tr><td></td><td>`?GL_POINT_SMOOTH_HINT' setting </td></tr><tr><td></td><td>`?GL_LINE_SMOOTH_HINT' -%% setting </td></tr><tr><td></td><td>`?GL_POLYGON_SMOOTH_HINT' setting </td></tr><tr><td> -%% </td><td>`?GL_FOG_HINT' setting </td></tr><tr><td></td><td>`?GL_GENERATE_MIPMAP_HINT' -%% setting </td></tr><tr><td></td><td>`?GL_TEXTURE_COMPRESSION_HINT' setting </td></tr> -%% <tr><td>`?GL_LIGHTING_BIT'</td><td>`?GL_COLOR_MATERIAL' enable bit </td></tr><tr> -%% <td></td><td>`?GL_COLOR_MATERIAL_FACE' value </td></tr><tr><td></td><td> Color material -%% parameters that are tracking the current color </td></tr><tr><td></td><td> Ambient scene -%% color </td></tr><tr><td></td><td>`?GL_LIGHT_MODEL_LOCAL_VIEWER' value </td></tr><tr><td> -%% </td><td>`?GL_LIGHT_MODEL_TWO_SIDE' setting </td></tr><tr><td></td><td>`?GL_LIGHTING' -%% enable bit </td></tr><tr><td></td><td> Enable bit for each light </td></tr><tr><td></td><td> -%% Ambient, diffuse, and specular intensity for each light </td></tr><tr><td></td><td> Direction, -%% position, exponent, and cutoff angle for each light </td></tr><tr><td></td><td> Constant, -%% linear, and quadratic attenuation factors for each light </td></tr><tr><td></td><td> Ambient, -%% diffuse, specular, and emissive color for each material </td></tr><tr><td></td><td> Ambient, -%% diffuse, and specular color indices for each material </td></tr><tr><td></td><td> Specular -%% exponent for each material </td></tr><tr><td></td><td>`?GL_SHADE_MODEL' setting </td> -%% </tr><tr><td>`?GL_LINE_BIT'</td><td>`?GL_LINE_SMOOTH' flag </td></tr><tr><td></td> -%% <td>`?GL_LINE_STIPPLE' enable bit </td></tr><tr><td></td><td> Line stipple pattern -%% and repeat counter </td></tr><tr><td></td><td> Line width </td></tr><tr><td>`?GL_LIST_BIT' -%% </td><td>`?GL_LIST_BASE' setting </td></tr><tr><td>`?GL_MULTISAMPLE_BIT'</td><td> -%% `?GL_MULTISAMPLE' flag </td></tr><tr><td></td><td>`?GL_SAMPLE_ALPHA_TO_COVERAGE' -%% flag </td></tr><tr><td></td><td>`?GL_SAMPLE_ALPHA_TO_ONE' flag </td></tr><tr><td></td> -%% <td>`?GL_SAMPLE_COVERAGE' flag </td></tr><tr><td></td><td>`?GL_SAMPLE_COVERAGE_VALUE' -%% value </td></tr><tr><td></td><td>`?GL_SAMPLE_COVERAGE_INVERT' value </td></tr><tr><td> -%% `?GL_PIXEL_MODE_BIT'</td><td>`?GL_RED_BIAS' and `?GL_RED_SCALE' settings </td> -%% </tr><tr><td></td><td>`?GL_GREEN_BIAS' and `?GL_GREEN_SCALE' values </td></tr><tr> -%% <td></td><td>`?GL_BLUE_BIAS' and `?GL_BLUE_SCALE'</td></tr><tr><td></td><td>`?GL_ALPHA_BIAS' -%% and `?GL_ALPHA_SCALE'</td></tr><tr><td></td><td>`?GL_DEPTH_BIAS' and `?GL_DEPTH_SCALE' -%% </td></tr><tr><td></td><td>`?GL_INDEX_OFFSET' and `?GL_INDEX_SHIFT' values </td> -%% </tr><tr><td></td><td>`?GL_MAP_COLOR' and `?GL_MAP_STENCIL' flags </td></tr><tr> -%% <td></td><td>`?GL_ZOOM_X' and `?GL_ZOOM_Y' factors </td></tr><tr><td></td><td>`?GL_READ_BUFFER' -%% setting </td></tr><tr><td>`?GL_POINT_BIT'</td><td>`?GL_POINT_SMOOTH' flag </td> -%% </tr><tr><td></td><td> Point size </td></tr><tr><td>`?GL_POLYGON_BIT'</td><td>`?GL_CULL_FACE' -%% enable bit </td></tr><tr><td></td><td>`?GL_CULL_FACE_MODE' value </td></tr><tr><td></td> -%% <td>`?GL_FRONT_FACE' indicator </td></tr><tr><td></td><td>`?GL_POLYGON_MODE' -%% setting </td></tr><tr><td></td><td>`?GL_POLYGON_SMOOTH' flag </td></tr><tr><td></td><td> -%% `?GL_POLYGON_STIPPLE' enable bit </td></tr><tr><td></td><td>`?GL_POLYGON_OFFSET_FILL' -%% flag </td></tr><tr><td></td><td>`?GL_POLYGON_OFFSET_LINE' flag </td></tr><tr><td></td> -%% <td>`?GL_POLYGON_OFFSET_POINT' flag </td></tr><tr><td></td><td>`?GL_POLYGON_OFFSET_FACTOR' -%% </td></tr><tr><td></td><td>`?GL_POLYGON_OFFSET_UNITS'</td></tr><tr><td>`?GL_POLYGON_STIPPLE_BIT' -%% </td><td> Polygon stipple image </td></tr><tr><td>`?GL_SCISSOR_BIT'</td><td>`?GL_SCISSOR_TEST' -%% flag </td></tr><tr><td></td><td> Scissor box </td></tr><tr><td>`?GL_STENCIL_BUFFER_BIT' -%% </td><td>`?GL_STENCIL_TEST' enable bit </td></tr><tr><td></td><td> Stencil function -%% and reference value </td></tr><tr><td></td><td> Stencil value mask </td></tr><tr><td></td> -%% <td> Stencil fail, pass, and depth buffer pass actions </td></tr><tr><td></td><td> Stencil -%% buffer clear value </td></tr><tr><td></td><td> Stencil buffer writemask </td></tr><tr><td> -%% `?GL_TEXTURE_BIT'</td><td> Enable bits for the four texture coordinates </td></tr><tr> -%% <td></td><td> Border color for each texture image </td></tr><tr><td></td><td> Minification -%% function for each texture image </td></tr><tr><td></td><td> Magnification function for -%% each texture image </td></tr><tr><td></td><td> Texture coordinates and wrap mode for each -%% texture image </td></tr><tr><td></td><td> Color and mode for each texture environment </td> -%% </tr><tr><td></td><td> Enable bits `?GL_TEXTURE_GEN_'`x', `x' is S, T, -%% R, and Q </td></tr><tr><td></td><td>`?GL_TEXTURE_GEN_MODE' setting for S, T, R, and -%% Q </td></tr><tr><td></td><td> {@link gl:texGend/3} plane equations for S, T, R, and Q </td></tr> -%% <tr><td></td><td> Current texture bindings (for example, `?GL_TEXTURE_BINDING_2D') </td> -%% </tr><tr><td>`?GL_TRANSFORM_BIT'</td><td> Coefficients of the six clipping planes </td> -%% </tr><tr><td></td><td> Enable bits for the user-definable clipping planes </td></tr><tr><td> -%% </td><td>`?GL_MATRIX_MODE' value </td></tr><tr><td></td><td>`?GL_NORMALIZE' -%% flag </td></tr><tr><td></td><td>`?GL_RESCALE_NORMAL' flag </td></tr><tr><td>`?GL_VIEWPORT_BIT' -%% </td><td> Depth range (near and far) </td></tr><tr><td></td><td> Viewport origin and extent -%% </td></tr></tbody></table> -%% -%% {@link gl:pushAttrib/1} restores the values of the state variables saved with the last ``gl:pushAttrib'' -%% command. Those not saved are left unchanged. -%% -%% It is an error to push attributes onto a full stack or to pop attributes off an empty -%% stack. In either case, the error flag is set and no other change is made to GL state. -%% -%% Initially, the attribute stack is empty. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPushAttrib.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPushAttrib.xml">external</a> documentation. -spec pushAttrib(Mask) -> 'ok' when Mask :: integer(). pushAttrib(Mask) -> cast(5069, <<Mask:?GLbitfield>>). @@ -2111,22 +717,7 @@ popAttrib() -> %% of these constants together. The special mask `?GL_CLIENT_ALL_ATTRIB_BITS' can %% be used to save all stackable client state. %% -%% The symbolic mask constants and their associated GL client state are as follows (the -%% second column lists which attributes are saved): -%% -%% `?GL_CLIENT_PIXEL_STORE_BIT' Pixel storage modes `?GL_CLIENT_VERTEX_ARRAY_BIT' -%% Vertex arrays (and enables) -%% -%% {@link gl:pushClientAttrib/1} restores the values of the client-state variables saved with -%% the last ``gl:pushClientAttrib''. Those not saved are left unchanged. -%% -%% It is an error to push attributes onto a full client attribute stack or to pop attributes -%% off an empty stack. In either case, the error flag is set, and no other change is made -%% to GL state. -%% -%% Initially, the client attribute stack is empty. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPushClientAttrib.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPushClientAttrib.xml">external</a> documentation. -spec pushClientAttrib(Mask) -> 'ok' when Mask :: integer(). pushClientAttrib(Mask) -> cast(5071, <<Mask:?GLbitfield>>). @@ -2142,37 +733,7 @@ popClientAttrib() -> %% ``gl:renderMode'' sets the rasterization mode. It takes one argument, `Mode' , which %% can assume one of three predefined values: %% -%% `?GL_RENDER': Render mode. Primitives are rasterized, producing pixel fragments, -%% which are written into the frame buffer. This is the normal mode and also the default -%% mode. -%% -%% `?GL_SELECT': Selection mode. No pixel fragments are produced, and no change to -%% the frame buffer contents is made. Instead, a record of the names of primitives that would -%% have been drawn if the render mode had been `?GL_RENDER' is returned in a select -%% buffer, which must be created (see {@link gl:selectBuffer/2} ) before selection mode is -%% entered. -%% -%% `?GL_FEEDBACK': Feedback mode. No pixel fragments are produced, and no change to -%% the frame buffer contents is made. Instead, the coordinates and attributes of vertices -%% that would have been drawn if the render mode had been `?GL_RENDER' is returned in -%% a feedback buffer, which must be created (see {@link gl:feedbackBuffer/3} ) before feedback -%% mode is entered. -%% -%% The return value of ``gl:renderMode'' is determined by the render mode at the time ``gl:renderMode'' -%% is called, rather than by `Mode' . The values returned for the three render modes -%% are as follows: -%% -%% `?GL_RENDER': 0. -%% -%% `?GL_SELECT': The number of hit records transferred to the select buffer. -%% -%% `?GL_FEEDBACK': The number of values (not vertices) transferred to the feedback -%% buffer. -%% -%% See the {@link gl:selectBuffer/2} and {@link gl:feedbackBuffer/3} reference pages for more -%% details concerning selection and feedback operation. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glRenderMode.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glRenderMode.xml">external</a> documentation. -spec renderMode(Mode) -> integer() when Mode :: enum(). renderMode(Mode) -> call(5073, <<Mode:?GLenum>>). @@ -2186,44 +747,7 @@ renderMode(Mode) -> %% returns `?GL_NO_ERROR', there has been no detectable error since the last call to ``gl:getError'' %% , or since the GL was initialized. %% -%% To allow for distributed implementations, there may be several error flags. If any single -%% error flag has recorded an error, the value of that flag is returned and that flag is -%% reset to `?GL_NO_ERROR' when ``gl:getError'' is called. If more than one flag has -%% recorded an error, ``gl:getError'' returns and clears an arbitrary error flag value. -%% Thus, ``gl:getError'' should always be called in a loop, until it returns `?GL_NO_ERROR' -%% , if all error flags are to be reset. -%% -%% Initially, all error flags are set to `?GL_NO_ERROR'. -%% -%% The following errors are currently defined: -%% -%% `?GL_NO_ERROR': No error has been recorded. The value of this symbolic constant -%% is guaranteed to be 0. -%% -%% `?GL_INVALID_ENUM': An unacceptable value is specified for an enumerated argument. -%% The offending command is ignored and has no other side effect than to set the error flag. -%% -%% -%% `?GL_INVALID_VALUE': A numeric argument is out of range. The offending command is -%% ignored and has no other side effect than to set the error flag. -%% -%% `?GL_INVALID_OPERATION': The specified operation is not allowed in the current state. -%% The offending command is ignored and has no other side effect than to set the error flag. -%% -%% -%% `?GL_INVALID_FRAMEBUFFER_OPERATION': The framebuffer object is not complete. The -%% offending command is ignored and has no other side effect than to set the error flag. -%% -%% `?GL_OUT_OF_MEMORY': There is not enough memory left to execute the command. The -%% state of the GL is undefined, except for the state of the error flags, after this error -%% is recorded. -%% -%% When an error flag is set, results of a GL operation are undefined only if `?GL_OUT_OF_MEMORY' -%% has occurred. In all other cases, the command generating the error is ignored and has -%% no effect on the GL state or frame buffer contents. If the generating command returns -%% a value, it returns 0. If ``gl:getError'' itself generates an error, it returns 0. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetError.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetError.xhtml">external</a> documentation. -spec getError() -> enum(). getError() -> call(5074, <<>>). @@ -2233,40 +757,7 @@ getError() -> %% ``gl:getString'' returns a pointer to a static string describing some aspect of the %% current GL connection. `Name' can be one of the following: %% -%% `?GL_VENDOR': Returns the company responsible for this GL implementation. This name -%% does not change from release to release. -%% -%% `?GL_RENDERER': Returns the name of the renderer. This name is typically specific -%% to a particular configuration of a hardware platform. It does not change from release -%% to release. -%% -%% `?GL_VERSION': Returns a version or release number. -%% -%% `?GL_SHADING_LANGUAGE_VERSION': Returns a version or release number for the shading -%% language. -%% -%% ``gl:getStringi'' returns a pointer to a static string indexed by `Index' . `Name' -%% can be one of the following: -%% -%% `?GL_EXTENSIONS': For ``gl:getStringi'' only, returns the extension string supported -%% by the implementation at `Index' . -%% -%% Strings `?GL_VENDOR' and `?GL_RENDERER' together uniquely specify a platform. -%% They do not change from release to release and should be used by platform-recognition -%% algorithms. -%% -%% The `?GL_VERSION' and `?GL_SHADING_LANGUAGE_VERSION' strings begin with a version -%% number. The version number uses one of these forms: -%% -%% `major_number.minor_number'`major_number.minor_number.release_number' -%% -%% Vendor-specific information may follow the version number. Its format depends on the -%% implementation, but a space always separates the version number and the vendor-specific -%% information. -%% -%% All strings are null-terminated. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetString.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetString.xhtml">external</a> documentation. -spec getString(Name) -> string() when Name :: enum(). getString(Name) -> call(5075, <<Name:?GLenum>>). @@ -2277,7 +768,7 @@ getString(Name) -> %% are complete. Such effects include all changes to GL state, all changes to connection %% state, and all changes to the frame buffer contents. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFinish.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glFinish.xhtml">external</a> documentation. -spec finish() -> 'ok'. finish() -> cast(5076, <<>>). @@ -2290,12 +781,7 @@ finish() -> %% the actual rendering engine. Though this execution may not be completed in any particular %% time period, it does complete in finite time. %% -%% Because any GL program might be executed over a network, or on an accelerator that buffers -%% commands, all programs should call ``gl:flush'' whenever they count on having all of -%% their previously issued commands completed. For example, call ``gl:flush'' before waiting -%% for user input that depends on the generated image. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFlush.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glFlush.xhtml">external</a> documentation. -spec flush() -> 'ok'. flush() -> cast(5077, <<>>). @@ -2308,36 +794,7 @@ flush() -> %% indicating the desired behavior. The initial value for each `Target' is `?GL_DONT_CARE' %% . `Mode' can be one of the following: %% -%% `?GL_FASTEST': The most efficient option should be chosen. -%% -%% `?GL_NICEST': The most correct, or highest quality, option should be chosen. -%% -%% `?GL_DONT_CARE': No preference. -%% -%% Though the implementation aspects that can be hinted are well defined, the interpretation -%% of the hints depends on the implementation. The hint aspects that can be specified with `Target' -%% , along with suggested semantics, are as follows: -%% -%% `?GL_FRAGMENT_SHADER_DERIVATIVE_HINT': Indicates the accuracy of the derivative -%% calculation for the GL shading language fragment processing built-in functions: `?dFdx' -%% , `?dFdy', and `?fwidth'. -%% -%% `?GL_LINE_SMOOTH_HINT': Indicates the sampling quality of antialiased lines. If -%% a larger filter function is applied, hinting `?GL_NICEST' can result in more pixel -%% fragments being generated during rasterization. -%% -%% `?GL_POLYGON_SMOOTH_HINT': Indicates the sampling quality of antialiased polygons. -%% Hinting `?GL_NICEST' can result in more pixel fragments being generated during rasterization, -%% if a larger filter function is applied. -%% -%% `?GL_TEXTURE_COMPRESSION_HINT': Indicates the quality and performance of the compressing -%% texture images. Hinting `?GL_FASTEST' indicates that texture images should be compressed -%% as quickly as possible, while `?GL_NICEST' indicates that texture images should be -%% compressed with as little image quality loss as possible. `?GL_NICEST' should be -%% selected if the texture is to be retrieved by {@link gl:getCompressedTexImage/3} for reuse. -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glHint.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glHint.xhtml">external</a> documentation. -spec hint(Target, Mode) -> 'ok' when Target :: enum(),Mode :: enum(). hint(Target,Mode) -> cast(5078, <<Target:?GLenum,Mode:?GLenum>>). @@ -2347,7 +804,7 @@ hint(Target,Mode) -> %% ``gl:clearDepth'' specifies the depth value used by {@link gl:clear/1} to clear the depth %% buffer. Values specified by ``gl:clearDepth'' are clamped to the range [0 1]. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClearDepth.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glClearDepth.xhtml">external</a> documentation. -spec clearDepth(Depth) -> 'ok' when Depth :: clamp(). clearDepth(Depth) -> cast(5079, <<Depth:?GLclampd>>). @@ -2359,36 +816,7 @@ clearDepth(Depth) -> %% depth testing is enabled. (See {@link gl:enable/1} and {@link gl:enable/1} of `?GL_DEPTH_TEST' %% .) %% -%% `Func' specifies the conditions under which the pixel will be drawn. The comparison -%% functions are as follows: -%% -%% `?GL_NEVER': Never passes. -%% -%% `?GL_LESS': Passes if the incoming depth value is less than the stored depth value. -%% -%% -%% `?GL_EQUAL': Passes if the incoming depth value is equal to the stored depth value. -%% -%% -%% `?GL_LEQUAL': Passes if the incoming depth value is less than or equal to the stored -%% depth value. -%% -%% `?GL_GREATER': Passes if the incoming depth value is greater than the stored depth -%% value. -%% -%% `?GL_NOTEQUAL': Passes if the incoming depth value is not equal to the stored depth -%% value. -%% -%% `?GL_GEQUAL': Passes if the incoming depth value is greater than or equal to the -%% stored depth value. -%% -%% `?GL_ALWAYS': Always passes. -%% -%% The initial value of `Func' is `?GL_LESS'. Initially, depth testing is disabled. -%% If depth testing is disabled or if no depth buffer exists, it is as if the depth test -%% always passes. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDepthFunc.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDepthFunc.xhtml">external</a> documentation. -spec depthFunc(Func) -> 'ok' when Func :: enum(). depthFunc(Func) -> cast(5080, <<Func:?GLenum>>). @@ -2399,7 +827,7 @@ depthFunc(Func) -> %% is `?GL_FALSE', depth buffer writing is disabled. Otherwise, it is enabled. Initially, %% depth buffer writing is enabled. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDepthMask.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDepthMask.xhtml">external</a> documentation. -spec depthMask(Flag) -> 'ok' when Flag :: 0|1. depthMask(Flag) -> cast(5081, <<Flag:?GLboolean>>). @@ -2413,10 +841,7 @@ depthMask(Flag) -> %% as though they range from 0 through 1 (like color components). Thus, the values accepted %% by ``gl:depthRange'' are both clamped to this range before they are accepted. %% -%% The setting of (0,1) maps the near plane to 0 and the far plane to 1. With this mapping, -%% the depth buffer range is fully utilized. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDepthRange.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDepthRange.xhtml">external</a> documentation. -spec depthRange(Near_val, Far_val) -> 'ok' when Near_val :: clamp(),Far_val :: clamp(). depthRange(Near_val,Far_val) -> cast(5082, <<Near_val:?GLclampd,Far_val:?GLclampd>>). @@ -2426,9 +851,7 @@ depthRange(Near_val,Far_val) -> %% ``gl:clearAccum'' specifies the red, green, blue, and alpha values used by {@link gl:clear/1} %% to clear the accumulation buffer. %% -%% Values specified by ``gl:clearAccum'' are clamped to the range [-1 1]. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClearAccum.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glClearAccum.xml">external</a> documentation. -spec clearAccum(Red, Green, Blue, Alpha) -> 'ok' when Red :: float(),Green :: float(),Blue :: float(),Alpha :: float(). clearAccum(Red,Green,Blue,Alpha) -> cast(5083, <<Red:?GLfloat,Green:?GLfloat,Blue:?GLfloat,Alpha:?GLfloat>>). @@ -2441,53 +864,7 @@ clearAccum(Red,Green,Blue,Alpha) -> %% and polygons), motion blur, and depth of field can be created by accumulating images generated %% with different transformation matrices. %% -%% Each pixel in the accumulation buffer consists of red, green, blue, and alpha values. -%% The number of bits per component in the accumulation buffer depends on the implementation. -%% You can examine this number by calling {@link gl:getBooleanv/1} four times, with arguments -%% `?GL_ACCUM_RED_BITS', `?GL_ACCUM_GREEN_BITS', `?GL_ACCUM_BLUE_BITS', and `?GL_ACCUM_ALPHA_BITS' -%% . Regardless of the number of bits per component, the range of values stored by each component -%% is [-1 1]. The accumulation buffer pixels are mapped one-to-one with frame buffer pixels. -%% -%% ``gl:accum'' operates on the accumulation buffer. The first argument, `Op' , is -%% a symbolic constant that selects an accumulation buffer operation. The second argument, `Value' -%% , is a floating-point value to be used in that operation. Five operations are specified: `?GL_ACCUM' -%% , `?GL_LOAD', `?GL_ADD', `?GL_MULT', and `?GL_RETURN'. -%% -%% All accumulation buffer operations are limited to the area of the current scissor box -%% and applied identically to the red, green, blue, and alpha components of each pixel. If -%% a ``gl:accum'' operation results in a value outside the range [-1 1], the contents of an -%% accumulation buffer pixel component are undefined. -%% -%% The operations are as follows: -%% -%% `?GL_ACCUM': Obtains R, G, B, and A values from the buffer currently selected for -%% reading (see {@link gl:readBuffer/1} ). Each component value is divided by 2 n-1, where -%% n is the number of bits allocated to each color component in the currently selected buffer. -%% The result is a floating-point value in the range [0 1], which is multiplied by `Value' -%% and added to the corresponding pixel component in the accumulation buffer, thereby updating -%% the accumulation buffer. -%% -%% `?GL_LOAD': Similar to `?GL_ACCUM', except that the current value in the accumulation -%% buffer is not used in the calculation of the new value. That is, the R, G, B, and A values -%% from the currently selected buffer are divided by 2 n-1, multiplied by `Value' , -%% and then stored in the corresponding accumulation buffer cell, overwriting the current -%% value. -%% -%% `?GL_ADD': Adds `Value' to each R, G, B, and A in the accumulation buffer. -%% -%% `?GL_MULT': Multiplies each R, G, B, and A in the accumulation buffer by `Value' -%% and returns the scaled component to its corresponding accumulation buffer location. -%% -%% `?GL_RETURN': Transfers accumulation buffer values to the color buffer or buffers -%% currently selected for writing. Each R, G, B, and A component is multiplied by `Value' -%% , then multiplied by 2 n-1, clamped to the range [0 2 n-1], and stored in the corresponding -%% display buffer cell. The only fragment operations that are applied to this transfer are -%% pixel ownership, scissor, dithering, and color writemasks. -%% -%% To clear the accumulation buffer, call {@link gl:clearAccum/4} with R, G, B, and A values -%% to set it to, then call {@link gl:clear/1} with the accumulation buffer enabled. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glAccum.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glAccum.xml">external</a> documentation. -spec accum(Op, Value) -> 'ok' when Op :: enum(),Value :: float(). accum(Op,Value) -> cast(5084, <<Op:?GLenum,Value:?GLfloat>>). @@ -2497,20 +874,7 @@ accum(Op,Value) -> %% ``gl:matrixMode'' sets the current matrix mode. `Mode' can assume one of four values: %% %% -%% `?GL_MODELVIEW': Applies subsequent matrix operations to the modelview matrix stack. -%% -%% -%% `?GL_PROJECTION': Applies subsequent matrix operations to the projection matrix -%% stack. -%% -%% `?GL_TEXTURE': Applies subsequent matrix operations to the texture matrix stack. -%% -%% `?GL_COLOR': Applies subsequent matrix operations to the color matrix stack. -%% -%% To find out which matrix stack is currently the target of all matrix operations, call {@link gl:getBooleanv/1} -%% with argument `?GL_MATRIX_MODE'. The initial value is `?GL_MODELVIEW'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMatrixMode.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMatrixMode.xml">external</a> documentation. -spec matrixMode(Mode) -> 'ok' when Mode :: enum(). matrixMode(Mode) -> cast(5085, <<Mode:?GLenum>>). @@ -2522,20 +886,7 @@ matrixMode(Mode) -> %% the current matrix, as if {@link gl:multMatrixd/1} were called with the following matrix %% as its argument: %% -%% ((2/(right-left)) 0 0(t x) 0(2/(top-bottom)) 0(t y) 0 0(-2/(farVal-nearVal))(t z) 0 0 0 1) -%% -%% where t x=-((right+left)/(right-left)) t y=-((top+bottom)/(top-bottom)) t z=-((farVal+nearVal)/(farVal-nearVal)) -%% -%% Typically, the matrix mode is `?GL_PROJECTION', and (left bottom-nearVal) and (right top-nearVal) specify the points on -%% the near clipping plane that are mapped to the lower left and upper right corners of the -%% window, respectively, assuming that the eye is located at (0, 0, 0). -farVal specifies -%% the location of the far clipping plane. Both `NearVal' and `FarVal' can be either -%% positive or negative. -%% -%% Use {@link gl:pushMatrix/0} and {@link gl:pushMatrix/0} to save and restore the current -%% matrix stack. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glOrtho.xml">external</a> documentation. -spec ortho(Left, Right, Bottom, Top, Near_val, Far_val) -> 'ok' when Left :: float(),Right :: float(),Bottom :: float(),Top :: float(),Near_val :: float(),Far_val :: float(). ortho(Left,Right,Bottom,Top,Near_val,Far_val) -> cast(5086, <<Left:?GLdouble,Right:?GLdouble,Bottom:?GLdouble,Top:?GLdouble,Near_val:?GLdouble,Far_val:?GLdouble>>). @@ -2547,25 +898,7 @@ ortho(Left,Right,Bottom,Top,Near_val,Far_val) -> %% replaces the current matrix, as if {@link gl:multMatrixd/1} were called with the following %% matrix as its argument: %% -%% [((2 nearVal)/(right-left)) 0 A 0 0((2 nearVal)/(top-bottom)) B 0 0 0 C D 0 0 -1 0] -%% -%% A=(right+left)/(right-left) -%% -%% B=(top+bottom)/(top-bottom) -%% -%% C=-((farVal+nearVal)/(farVal-nearVal)) -%% -%% D=-((2 farVal nearVal)/(farVal-nearVal)) -%% -%% Typically, the matrix mode is `?GL_PROJECTION', and (left bottom-nearVal) and (right top-nearVal) specify the points on -%% the near clipping plane that are mapped to the lower left and upper right corners of the -%% window, assuming that the eye is located at (0, 0, 0). -farVal specifies the location -%% of the far clipping plane. Both `NearVal' and `FarVal' must be positive. -%% -%% Use {@link gl:pushMatrix/0} and {@link gl:pushMatrix/0} to save and restore the current -%% matrix stack. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFrustum.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFrustum.xml">external</a> documentation. -spec frustum(Left, Right, Bottom, Top, Near_val, Far_val) -> 'ok' when Left :: float(),Right :: float(),Bottom :: float(),Top :: float(),Near_val :: float(),Far_val :: float(). frustum(Left,Right,Bottom,Top,Near_val,Far_val) -> cast(5087, <<Left:?GLdouble,Right:?GLdouble,Bottom:?GLdouble,Top:?GLdouble,Near_val:?GLdouble,Far_val:?GLdouble>>). @@ -2576,14 +909,7 @@ frustum(Left,Right,Bottom,Top,Near_val,Far_val) -> %% coordinates to window coordinates. Let (x nd y nd) be normalized device coordinates. Then the window %% coordinates (x w y w) are computed as follows: %% -%% x w=(x nd+1) (width/2)+x -%% -%% y w=(y nd+1) (height/2)+y -%% -%% Viewport width and height are silently clamped to a range that depends on the implementation. -%% To query this range, call {@link gl:getBooleanv/1} with argument `?GL_MAX_VIEWPORT_DIMS'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glViewport.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glViewport.xhtml">external</a> documentation. -spec viewport(X, Y, Width, Height) -> 'ok' when X :: integer(),Y :: integer(),Width :: integer(),Height :: integer(). viewport(X,Y,Width,Height) -> cast(5088, <<X:?GLint,Y:?GLint,Width:?GLsizei,Height:?GLsizei>>). @@ -2595,20 +921,7 @@ viewport(X,Y,Width,Height) -> %% , and `?GL_TEXTURE', the depth is at least 2. The current matrix in any mode is the %% matrix on the top of the stack for that mode. %% -%% ``gl:pushMatrix'' pushes the current matrix stack down by one, duplicating the current -%% matrix. That is, after a ``gl:pushMatrix'' call, the matrix on top of the stack is identical -%% to the one below it. -%% -%% {@link gl:pushMatrix/0} pops the current matrix stack, replacing the current matrix with -%% the one below it on the stack. -%% -%% Initially, each of the stacks contains one matrix, an identity matrix. -%% -%% It is an error to push a full matrix stack or to pop a matrix stack that contains only -%% a single matrix. In either case, the error flag is set and no other change is made to -%% GL state. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPushMatrix.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPushMatrix.xml">external</a> documentation. -spec pushMatrix() -> 'ok'. pushMatrix() -> cast(5089, <<>>). @@ -2624,11 +937,7 @@ popMatrix() -> %% ``gl:loadIdentity'' replaces the current matrix with the identity matrix. It is semantically %% equivalent to calling {@link gl:loadMatrixd/1} with the identity matrix %% -%% ((1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1)) -%% -%% but in some cases it is more efficient. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLoadIdentity.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glLoadIdentity.xml">external</a> documentation. -spec loadIdentity() -> 'ok'. loadIdentity() -> cast(5091, <<>>). @@ -2639,16 +948,7 @@ loadIdentity() -> %% by `M' . The current matrix is the projection matrix, modelview matrix, or texture %% matrix, depending on the current matrix mode (see {@link gl:matrixMode/1} ). %% -%% The current matrix, M, defines a transformation of coordinates. For instance, assume -%% M refers to the modelview matrix. If v=(v[0] v[1] v[2] v[3]) is the set of object coordinates of a vertex, -%% and `M' points to an array of 16 single- or double-precision floating-point values -%% m={m[0] m[1] ... m[15]}, then the modelview transformation M(v) does the following: -%% -%% M(v)=(m[0] m[4] m[8] m[12] m[1] m[5] m[9] m[13] m[2] m[6] m[10] m[14] m[3] m[7] m[11] m[15])×(v[0] v[1] v[2] v[3]) -%% -%% Projection and texture transformations are similarly defined. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLoadMatrix.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glLoadMatrix.xml">external</a> documentation. -spec loadMatrixd(M) -> 'ok' when M :: matrix(). loadMatrixd({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16}) -> cast(5092, <<M1:?GLdouble,M2:?GLdouble,M3:?GLdouble,M4:?GLdouble,M5:?GLdouble,M6:?GLdouble,M7:?GLdouble,M8:?GLdouble,M9:?GLdouble,M10:?GLdouble,M11:?GLdouble,M12:?GLdouble,M13:?GLdouble,M14:?GLdouble,M15:?GLdouble,M16:?GLdouble>>); @@ -2668,10 +968,7 @@ loadMatrixf({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}) -> %% ``gl:multMatrix'' multiplies the current matrix with the one specified using `M' , %% and replaces the current matrix with the product. %% -%% The current matrix is determined by the current matrix mode (see {@link gl:matrixMode/1} ). -%% It is either the projection matrix, modelview matrix, or the texture matrix. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMultMatrix.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMultMatrix.xml">external</a> documentation. -spec multMatrixd(M) -> 'ok' when M :: matrix(). multMatrixd({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16}) -> cast(5094, <<M1:?GLdouble,M2:?GLdouble,M3:?GLdouble,M4:?GLdouble,M5:?GLdouble,M6:?GLdouble,M7:?GLdouble,M8:?GLdouble,M9:?GLdouble,M10:?GLdouble,M11:?GLdouble,M12:?GLdouble,M13:?GLdouble,M14:?GLdouble,M15:?GLdouble,M16:?GLdouble>>); @@ -2693,16 +990,7 @@ multMatrixf({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}) -> %% replacing the current matrix, as if {@link gl:multMatrixd/1} were called with the following %% matrix as its argument: %% -%% (x 2(1-c)+c x y(1-c)-z s x z(1-c)+y s 0 y x(1-c)+z s y 2(1-c)+c y z(1-c)-x s 0 x z(1-c)-y s y z(1-c)+x s z 2(1-c)+c 0 0 0 0 -%% 1) -%% -%% Where c=cos(angle), s=sin(angle), and ||(x y z)||=1 (if not, the GL will normalize this vector). -%% -%% If the matrix mode is either `?GL_MODELVIEW' or `?GL_PROJECTION', all objects -%% drawn after ``gl:rotate'' is called are rotated. Use {@link gl:pushMatrix/0} and {@link gl:pushMatrix/0} -%% to save and restore the unrotated coordinate system. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glRotate.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glRotate.xml">external</a> documentation. -spec rotated(Angle, X, Y, Z) -> 'ok' when Angle :: float(),X :: float(),Y :: float(),Z :: float(). rotated(Angle,X,Y,Z) -> cast(5096, <<Angle:?GLdouble,X:?GLdouble,Y:?GLdouble,Z:?GLdouble>>). @@ -2719,19 +1007,7 @@ rotatef(Angle,X,Y,Z) -> %% axes. The three parameters indicate the desired scale factor along each of the three axes. %% %% -%% The current matrix (see {@link gl:matrixMode/1} ) is multiplied by this scale matrix, and -%% the product replaces the current matrix as if {@link gl:multMatrixd/1} were called with -%% the following matrix as its argument: -%% -%% (x 0 0 0 0 y 0 0 0 0 z 0 0 0 0 1) -%% -%% If the matrix mode is either `?GL_MODELVIEW' or `?GL_PROJECTION', all objects -%% drawn after ``gl:scale'' is called are scaled. -%% -%% Use {@link gl:pushMatrix/0} and {@link gl:pushMatrix/0} to save and restore the unscaled -%% coordinate system. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glScale.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glScale.xml">external</a> documentation. -spec scaled(X, Y, Z) -> 'ok' when X :: float(),Y :: float(),Z :: float(). scaled(X,Y,Z) -> cast(5098, <<X:?GLdouble,Y:?GLdouble,Z:?GLdouble>>). @@ -2748,15 +1024,7 @@ scalef(X,Y,Z) -> %% ) is multiplied by this translation matrix, with the product replacing the current matrix, %% as if {@link gl:multMatrixd/1} were called with the following matrix for its argument: %% -%% (1 0 0 x 0 1 0 y 0 0 1 z 0 0 0 1) -%% -%% If the matrix mode is either `?GL_MODELVIEW' or `?GL_PROJECTION', all objects -%% drawn after a call to ``gl:translate'' are translated. -%% -%% Use {@link gl:pushMatrix/0} and {@link gl:pushMatrix/0} to save and restore the untranslated -%% coordinate system. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTranslate.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTranslate.xml">external</a> documentation. -spec translated(X, Y, Z) -> 'ok' when X :: float(),Y :: float(),Z :: float(). translated(X,Y,Z) -> cast(5100, <<X:?GLdouble,Y:?GLdouble,Z:?GLdouble>>). @@ -2772,10 +1040,7 @@ translatef(X,Y,Z) -> %% ``gl:isList'' returns `?GL_TRUE' if `List' is the name of a display list and %% returns `?GL_FALSE' if it is not, or if an error occurs. %% -%% A name returned by {@link gl:genLists/1} , but not yet associated with a display list by -%% calling {@link gl:newList/2} , is not the name of a display list. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsList.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glIsList.xml">external</a> documentation. -spec isList(List) -> 0|1 when List :: integer(). isList(List) -> call(5102, <<List:?GLuint>>). @@ -2787,11 +1052,7 @@ isList(List) -> %% display lists to delete. All display lists d with list<= d<= list+range-1 are %% deleted. %% -%% All storage locations allocated to the specified display lists are freed, and the names -%% are available for reuse at a later time. Names within the range that do not have an associated -%% display list are ignored. If `Range' is 0, nothing happens. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteLists.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glDeleteLists.xml">external</a> documentation. -spec deleteLists(List, Range) -> 'ok' when List :: integer(),Range :: integer(). deleteLists(List,Range) -> cast(5103, <<List:?GLuint,Range:?GLsizei>>). @@ -2804,7 +1065,7 @@ deleteLists(List,Range) -> %% available, or if any error is generated, no display lists are generated, and 0 is returned. %% %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenLists.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGenLists.xml">external</a> documentation. -spec genLists(Range) -> integer() when Range :: integer(). genLists(Range) -> call(5104, <<Range:?GLsizei>>). @@ -2815,53 +1076,14 @@ genLists(Range) -> %% Display lists are created with ``gl:newList''. All subsequent commands are placed in %% the display list, in the order issued, until {@link gl:endList/0} is called. %% -%% ``gl:newList'' has two arguments. The first argument, `List' , is a positive integer -%% that becomes the unique name for the display list. Names can be created and reserved with -%% {@link gl:genLists/1} and tested for uniqueness with {@link gl:isList/1} . The second argument, -%% `Mode' , is a symbolic constant that can assume one of two values: -%% -%% `?GL_COMPILE': Commands are merely compiled. -%% -%% `?GL_COMPILE_AND_EXECUTE': Commands are executed as they are compiled into the display -%% list. -%% -%% Certain commands are not compiled into the display list but are executed immediately, -%% regardless of the display-list mode. These commands are {@link gl:areTexturesResident/1} , {@link gl:colorPointer/4} -%% , {@link gl:deleteLists/2} , {@link gl:deleteTextures/1} , {@link gl:enableClientState/1} , {@link gl:edgeFlagPointer/2} -%% , {@link gl:enableClientState/1} , {@link gl:feedbackBuffer/3} , {@link gl:finish/0} , {@link gl:flush/0} -%% , {@link gl:genLists/1} , {@link gl:genTextures/1} , {@link gl:indexPointer/3} , {@link gl:interleavedArrays/3} -%% , {@link gl:isEnabled/1} , {@link gl:isList/1} , {@link gl:isTexture/1} , {@link gl:normalPointer/3} -%% , {@link gl:pushClientAttrib/1} , {@link gl:pixelStoref/2} , {@link gl:pushClientAttrib/1} , {@link gl:readPixels/7} -%% , {@link gl:renderMode/1} , {@link gl:selectBuffer/2} , {@link gl:texCoordPointer/4} , {@link gl:vertexPointer/4} -%% , and all of the {@link gl:getBooleanv/1} commands. -%% -%% Similarly, {@link gl:texImage1D/8} , {@link gl:texImage2D/9} , and {@link gl:texImage3D/10} -%% are executed immediately and not compiled into the display list when their first argument -%% is `?GL_PROXY_TEXTURE_1D', `?GL_PROXY_TEXTURE_1D', or `?GL_PROXY_TEXTURE_3D' -%% , respectively. -%% -%% When the ARB_imaging extension is supported, {@link gl:histogram/4} executes immediately -%% when its argument is `?GL_PROXY_HISTOGRAM'. Similarly, {@link gl:colorTable/6} executes -%% immediately when its first argument is `?GL_PROXY_COLOR_TABLE', `?GL_PROXY_POST_CONVOLUTION_COLOR_TABLE' -%% , or `?GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE'. -%% -%% For OpenGL versions 1.3 and greater, or when the ARB_multitexture extension is supported, -%% {@link gl:clientActiveTexture/1} is not compiled into display lists, but executed immediately. -%% -%% -%% When {@link gl:endList/0} is encountered, the display-list definition is completed by -%% associating the list with the unique name `List' (specified in the ``gl:newList'' -%% command). If a display list with name `List' already exists, it is replaced only -%% when {@link gl:endList/0} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glNewList.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glNewList.xml">external</a> documentation. -spec newList(List, Mode) -> 'ok' when List :: integer(),Mode :: enum(). newList(List,Mode) -> cast(5105, <<List:?GLuint,Mode:?GLenum>>). %% @doc glBeginList %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBeginList.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec endList() -> 'ok'. endList() -> cast(5106, <<>>). @@ -2873,17 +1095,7 @@ endList() -> %% list. If `List' has not been defined as a display list, ``gl:callList'' is ignored. %% %% -%% ``gl:callList'' can appear inside a display list. To avoid the possibility of infinite -%% recursion resulting from display lists calling one another, a limit is placed on the nesting -%% level of display lists during display-list execution. This limit is at least 64, and it -%% depends on the implementation. -%% -%% GL state is not saved and restored across a call to ``gl:callList''. Thus, changes -%% made to GL state during the execution of a display list remain after execution of the -%% display list is completed. Use {@link gl:pushAttrib/1} , {@link gl:pushAttrib/1} , {@link gl:pushMatrix/0} -%% , and {@link gl:pushMatrix/0} to preserve GL state across ``gl:callList'' calls. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCallList.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCallList.xml">external</a> documentation. -spec callList(List) -> 'ok' when List :: integer(). callList(List) -> cast(5107, <<List:?GLuint>>). @@ -2895,62 +1107,7 @@ callList(List) -> %% just as if they were called without using a display list. Names of display lists that %% have not been defined are ignored. %% -%% ``gl:callLists'' provides an efficient means for executing more than one display list. `Type' -%% allows lists with various name formats to be accepted. The formats are as follows: -%% -%% `?GL_BYTE': `Lists' is treated as an array of signed bytes, each in the range -%% -128 through 127. -%% -%% `?GL_UNSIGNED_BYTE': `Lists' is treated as an array of unsigned bytes, each -%% in the range 0 through 255. -%% -%% `?GL_SHORT': `Lists' is treated as an array of signed two-byte integers, each -%% in the range -32768 through 32767. -%% -%% `?GL_UNSIGNED_SHORT': `Lists' is treated as an array of unsigned two-byte integers, -%% each in the range 0 through 65535. -%% -%% `?GL_INT': `Lists' is treated as an array of signed four-byte integers. -%% -%% `?GL_UNSIGNED_INT': `Lists' is treated as an array of unsigned four-byte integers. -%% -%% -%% `?GL_FLOAT': `Lists' is treated as an array of four-byte floating-point values. -%% -%% -%% `?GL_2_BYTES': `Lists' is treated as an array of unsigned bytes. Each pair of -%% bytes specifies a single display-list name. The value of the pair is computed as 256 times -%% the unsigned value of the first byte plus the unsigned value of the second byte. -%% -%% `?GL_3_BYTES': `Lists' is treated as an array of unsigned bytes. Each triplet -%% of bytes specifies a single display-list name. The value of the triplet is computed as -%% 65536 times the unsigned value of the first byte, plus 256 times the unsigned value of -%% the second byte, plus the unsigned value of the third byte. -%% -%% `?GL_4_BYTES': `Lists' is treated as an array of unsigned bytes. Each quadruplet -%% of bytes specifies a single display-list name. The value of the quadruplet is computed -%% as 16777216 times the unsigned value of the first byte, plus 65536 times the unsigned -%% value of the second byte, plus 256 times the unsigned value of the third byte, plus the -%% unsigned value of the fourth byte. -%% -%% The list of display-list names is not null-terminated. Rather, `N' specifies how -%% many names are to be taken from `Lists' . -%% -%% An additional level of indirection is made available with the {@link gl:listBase/1} command, -%% which specifies an unsigned offset that is added to each display-list name specified in `Lists' -%% before that display list is executed. -%% -%% ``gl:callLists'' can appear inside a display list. To avoid the possibility of infinite -%% recursion resulting from display lists calling one another, a limit is placed on the nesting -%% level of display lists during display-list execution. This limit must be at least 64, -%% and it depends on the implementation. -%% -%% GL state is not saved and restored across a call to ``gl:callLists''. Thus, changes -%% made to GL state during the execution of the display lists remain after execution is completed. -%% Use {@link gl:pushAttrib/1} , {@link gl:pushAttrib/1} , {@link gl:pushMatrix/0} , and {@link gl:pushMatrix/0} -%% to preserve GL state across ``gl:callLists'' calls. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCallLists.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCallLists.xml">external</a> documentation. -spec callLists(Lists) -> 'ok' when Lists :: [integer()]. callLists(Lists) -> ListsLen = length(Lists), @@ -2965,7 +1122,7 @@ callLists(Lists) -> %% by adding `Base' to each offset. Names that reference valid display lists are executed; %% the others are ignored. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glListBase.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glListBase.xml">external</a> documentation. -spec listBase(Base) -> 'ok' when Base :: integer(). listBase(Base) -> cast(5109, <<Base:?GLuint>>). @@ -2977,66 +1134,7 @@ listBase(Base) -> %% ten ways the vertices are interpreted. Taking n as an integer count starting at one, %% and N as the total number of vertices specified, the interpretations are as follows: %% -%% `?GL_POINTS': Treats each vertex as a single point. Vertex n defines point n. -%% N points are drawn. -%% -%% `?GL_LINES': Treats each pair of vertices as an independent line segment. Vertices -%% 2 n-1 and 2 n define line n. N/2 lines are drawn. -%% -%% `?GL_LINE_STRIP': Draws a connected group of line segments from the first vertex -%% to the last. Vertices n and n+1 define line n. N-1 lines are drawn. -%% -%% `?GL_LINE_LOOP': Draws a connected group of line segments from the first vertex -%% to the last, then back to the first. Vertices n and n+1 define line n. The last -%% line, however, is defined by vertices N and 1. N lines are drawn. -%% -%% `?GL_TRIANGLES': Treats each triplet of vertices as an independent triangle. Vertices -%% 3 n-2, 3 n-1, and 3 n define triangle n. N/3 triangles are drawn. -%% -%% `?GL_TRIANGLE_STRIP': Draws a connected group of triangles. One triangle is defined -%% for each vertex presented after the first two vertices. For odd n, vertices n, n+1, -%% and n+2 define triangle n. For even n, vertices n+1, n, and n+2 define triangle -%% n. N-2 triangles are drawn. -%% -%% `?GL_TRIANGLE_FAN': Draws a connected group of triangles. One triangle is defined -%% for each vertex presented after the first two vertices. Vertices 1, n+1, and n+2 -%% define triangle n. N-2 triangles are drawn. -%% -%% `?GL_QUADS': Treats each group of four vertices as an independent quadrilateral. -%% Vertices 4 n-3, 4 n-2, 4 n-1, and 4 n define quadrilateral n. N/4 quadrilaterals -%% are drawn. -%% -%% `?GL_QUAD_STRIP': Draws a connected group of quadrilaterals. One quadrilateral is -%% defined for each pair of vertices presented after the first pair. Vertices 2 n-1, 2 -%% n, 2 n+2, and 2 n+1 define quadrilateral n. N/2-1 quadrilaterals are drawn. Note -%% that the order in which vertices are used to construct a quadrilateral from strip data -%% is different from that used with independent data. -%% -%% `?GL_POLYGON': Draws a single, convex polygon. Vertices 1 through N define this -%% polygon. -%% -%% Only a subset of GL commands can be used between ``gl:'begin''' and {@link gl:'begin'/1} . -%% The commands are {@link gl:vertex2d/2} , {@link gl:color3b/3} , {@link gl:secondaryColor3b/3} , {@link gl:indexd/1} -%% , {@link gl:normal3b/3} , {@link gl:fogCoordf/1} , {@link gl:texCoord1d/1} , {@link gl:multiTexCoord1d/2} -%% , {@link gl:vertexAttrib1d/2} , {@link gl:evalCoord1d/1} , {@link gl:evalPoint1/1} , {@link gl:arrayElement/1} -%% , {@link gl:materialf/3} , and {@link gl:edgeFlag/1} . Also, it is acceptable to use {@link gl:callList/1} -%% or {@link gl:callLists/1} to execute display lists that include only the preceding commands. -%% If any other GL command is executed between ``gl:'begin''' and {@link gl:'begin'/1} , the error -%% flag is set and the command is ignored. -%% -%% Regardless of the value chosen for `Mode' , there is no limit to the number of vertices -%% that can be defined between ``gl:'begin''' and {@link gl:'begin'/1} . Lines, triangles, quadrilaterals, -%% and polygons that are incompletely specified are not drawn. Incomplete specification results -%% when either too few vertices are provided to specify even a single primitive or when an -%% incorrect multiple of vertices is specified. The incomplete primitive is ignored; the -%% rest are drawn. -%% -%% The minimum specification of vertices for each primitive is as follows: 1 for a point, -%% 2 for a line, 3 for a triangle, 4 for a quadrilateral, and 3 for a polygon. Modes that -%% require a certain multiple of vertices are `?GL_LINES' (2), `?GL_TRIANGLES' -%% (3), `?GL_QUADS' (4), and `?GL_QUAD_STRIP' (2). -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBegin.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBegin.xml">external</a> documentation. -spec 'begin'(Mode) -> 'ok' when Mode :: enum(). 'begin'(Mode) -> cast(5110, <<Mode:?GLenum>>). @@ -3053,10 +1151,7 @@ listBase(Base) -> %% point, line, and polygon vertices. The current color, normal, texture coordinates, and %% fog coordinate are associated with the vertex when ``gl:vertex'' is called. %% -%% When only x and y are specified, z defaults to 0 and w defaults to 1. When x, -%% y, and z are specified, w defaults to 1. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glVertex.xml">external</a> documentation. -spec vertex2d(X, Y) -> 'ok' when X :: float(),Y :: float(). vertex2d(X,Y) -> cast(5112, <<X:?GLdouble,Y:?GLdouble>>). @@ -3182,16 +1277,7 @@ vertex4sv({X,Y,Z,W}) -> vertex4s(X,Y,Z,W). %% mapping that maps the most positive representable integer value to 1.0 and the most negative %% representable integer value to -1.0. %% -%% Normals specified with ``gl:normal'' need not have unit length. If `?GL_NORMALIZE' -%% is enabled, then normals of any length specified with ``gl:normal'' are normalized after -%% transformation. If `?GL_RESCALE_NORMAL' is enabled, normals are scaled by a scaling -%% factor derived from the modelview matrix. `?GL_RESCALE_NORMAL' requires that the -%% originally specified normals were of unit length, and that the modelview matrix contain -%% only uniform scales for proper results. To enable and disable normalization, call {@link gl:enable/1} -%% and {@link gl:enable/1} with either `?GL_NORMALIZE' or `?GL_RESCALE_NORMAL'. -%% Normalization is initially disabled. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glNormal.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glNormal.xml">external</a> documentation. -spec normal3b(Nx, Ny, Nz) -> 'ok' when Nx :: integer(),Ny :: integer(),Nz :: integer(). normal3b(Nx,Ny,Nz) -> cast(5124, <<Nx:?GLbyte,Ny:?GLbyte,Nz:?GLbyte>>). @@ -3245,15 +1331,7 @@ normal3sv({Nx,Ny,Nz}) -> normal3s(Nx,Ny,Nz). %% ``gl:index'' updates the current (single-valued) color index. It takes one argument, %% the new value for the current color index. %% -%% The current index is stored as a floating-point value. Integer values are converted directly -%% to floating-point values, with no special mapping. The initial value is 1. -%% -%% Index values outside the representable range of the color index buffer are not clamped. -%% However, before an index is dithered (if enabled) and written to the frame buffer, it -%% is converted to fixed-point format. Any bits in the integer portion of the resulting fixed-point -%% value that do not correspond to bits in the frame buffer are masked out. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIndex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glIndex.xml">external</a> documentation. -spec indexd(C) -> 'ok' when C :: float(). indexd(C) -> cast(5129, <<C:?GLdouble>>). @@ -3310,24 +1388,7 @@ indexubv({C}) -> indexub(C). %% green, and blue values explicitly and set the current alpha value to 1.0 (full intensity) %% implicitly. ``gl:color4'' variants specify all four color components explicitly. %% -%% ``gl:color3b'', ``gl:color4b'', ``gl:color3s'', ``gl:color4s'', ``gl:color3i'', -%% and ``gl:color4i'' take three or four signed byte, short, or long integers as arguments. -%% When `v' is appended to the name, the color commands can take a pointer to an array -%% of such values. -%% -%% Current color values are stored in floating-point format, with unspecified mantissa and -%% exponent sizes. Unsigned integer color components, when specified, are linearly mapped -%% to floating-point values such that the largest representable value maps to 1.0 (full intensity), -%% and 0 maps to 0.0 (zero intensity). Signed integer color components, when specified, are -%% linearly mapped to floating-point values such that the most positive representable value -%% maps to 1.0, and the most negative representable value maps to -1.0. (Note that this -%% mapping does not convert 0 precisely to 0.0.) Floating-point values are mapped directly. -%% -%% Neither floating-point nor signed integer values are clamped to the range [0 1] before the -%% current color is updated. However, color components are clamped to this range before they -%% are interpolated or written into a color buffer. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glColor.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glColor.xml">external</a> documentation. -spec color3b(Red, Green, Blue) -> 'ok' when Red :: integer(),Green :: integer(),Blue :: integer(). color3b(Red,Green,Blue) -> cast(5134, <<Red:?GLbyte,Green:?GLbyte,Blue:?GLbyte>>). @@ -3494,13 +1555,7 @@ color4usv({Red,Green,Blue,Alpha}) -> color4us(Red,Green,Blue,Alpha). %% Similarly, ``gl:texCoord3'' specifies the texture coordinates as (s t r 1), and ``gl:texCoord4'' %% defines all four components explicitly as (s t r q). %% -%% The current texture coordinates are part of the data that is associated with each vertex -%% and with the current raster position. Initially, the values for `s', `t', `r' -%% , and `q' are (0, 0, 0, 1). -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexCoord.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTexCoord.xml">external</a> documentation. -spec texCoord1d(S) -> 'ok' when S :: float(). texCoord1d(S) -> cast(5150, <<S:?GLdouble>>). @@ -3666,41 +1721,7 @@ texCoord4sv({S,T,R,Q}) -> texCoord4s(S,T,R,Q). %% subpixel accuracy. See {@link gl:bitmap/7} , {@link gl:drawPixels/5} , and {@link gl:copyPixels/5} %% . %% -%% The current raster position consists of three window coordinates ( x, y, z), a clip -%% coordinate value ( w), an eye coordinate distance, a valid bit, and associated color -%% data and texture coordinates. The w coordinate is a clip coordinate, because w is -%% not projected to window coordinates. ``gl:rasterPos4'' specifies object coordinates x, -%% y, z, and w explicitly. ``gl:rasterPos3'' specifies object coordinate x, y, and -%% z explicitly, while w is implicitly set to 1. ``gl:rasterPos2'' uses the argument -%% values for x and y while implicitly setting z and w to 0 and 1. -%% -%% The object coordinates presented by ``gl:rasterPos'' are treated just like those of a {@link gl:vertex2d/2} -%% command: They are transformed by the current modelview and projection matrices and passed -%% to the clipping stage. If the vertex is not culled, then it is projected and scaled to -%% window coordinates, which become the new current raster position, and the `?GL_CURRENT_RASTER_POSITION_VALID' -%% flag is set. If the vertex `is' culled, then the valid bit is cleared and the current -%% raster position and associated color and texture coordinates are undefined. -%% -%% The current raster position also includes some associated color data and texture coordinates. -%% If lighting is enabled, then `?GL_CURRENT_RASTER_COLOR' (in RGBA mode) or `?GL_CURRENT_RASTER_INDEX' -%% (in color index mode) is set to the color produced by the lighting calculation (see {@link gl:lightf/3} -%% , {@link gl:lightModelf/2} , and {@link gl:shadeModel/1} ). If lighting is disabled, current -%% color (in RGBA mode, state variable `?GL_CURRENT_COLOR') or color index (in color -%% index mode, state variable `?GL_CURRENT_INDEX') is used to update the current raster -%% color. `?GL_CURRENT_RASTER_SECONDARY_COLOR' (in RGBA mode) is likewise updated. -%% -%% Likewise, `?GL_CURRENT_RASTER_TEXTURE_COORDS' is updated as a function of `?GL_CURRENT_TEXTURE_COORDS' -%% , based on the texture matrix and the texture generation functions (see {@link gl:texGend/3} ). -%% Finally, the distance from the origin of the eye coordinate system to the vertex as transformed -%% by only the modelview matrix replaces `?GL_CURRENT_RASTER_DISTANCE'. -%% -%% Initially, the current raster position is (0, 0, 0, 1), the current raster distance is -%% 0, the valid bit is set, the associated RGBA color is (1, 1, 1, 1), the associated color -%% index is 1, and the associated texture coordinates are (0, 0, 0, 1). In RGBA mode, `?GL_CURRENT_RASTER_INDEX' -%% is always 1; in color index mode, the current raster RGBA color always maintains its -%% initial value. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glRasterPos.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glRasterPos.xml">external</a> documentation. -spec rasterPos2d(X, Y) -> 'ok' when X :: float(),Y :: float(). rasterPos2d(X,Y) -> cast(5166, <<X:?GLdouble,Y:?GLdouble>>). @@ -3826,13 +1847,7 @@ rasterPos4sv({X,Y,Z,W}) -> rasterPos4s(X,Y,Z,W). %% coordinates or as two pointers to arrays, each containing an (x y) pair. The resulting rectangle %% is defined in the z=0 plane. %% -%% ``gl:rect''( `X1' , `Y1' , `X2' , `Y2' ) is exactly equivalent to the -%% following sequence: glBegin(`?GL_POLYGON'); glVertex2( `X1' , `Y1' ); glVertex2( -%% `X2' , `Y1' ); glVertex2( `X2' , `Y2' ); glVertex2( `X1' , `Y2' ); -%% glEnd(); Note that if the second vertex is above and to the right of the first vertex, -%% the rectangle is constructed with a counterclockwise winding. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glRect.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glRect.xml">external</a> documentation. -spec rectd(X1, Y1, X2, Y2) -> 'ok' when X1 :: float(),Y1 :: float(),X2 :: float(),Y2 :: float(). rectd(X1,Y1,X2,Y2) -> cast(5178, <<X1:?GLdouble,Y1:?GLdouble,X2:?GLdouble,Y2:?GLdouble>>). @@ -3888,21 +1903,7 @@ rectsv({V1,V2},{V1,V2}) -> %% to be packed into a single array or stored in separate arrays. (Single-array storage may %% be more efficient on some implementations; see {@link gl:interleavedArrays/3} .) %% -%% If a non-zero named buffer object is bound to the `?GL_ARRAY_BUFFER' target (see {@link gl:bindBuffer/2} -%% ) while a vertex array is specified, `Pointer' is treated as a byte offset into the -%% buffer object's data store. Also, the buffer object binding (`?GL_ARRAY_BUFFER_BINDING' -%% ) is saved as vertex array client-side state (`?GL_VERTEX_ARRAY_BUFFER_BINDING'). -%% -%% When a vertex array is specified, `Size' , `Type' , `Stride' , and `Pointer' -%% are saved as client-side state, in addition to the current vertex array buffer object -%% binding. -%% -%% To enable and disable the vertex array, call {@link gl:enableClientState/1} and {@link gl:enableClientState/1} -%% with the argument `?GL_VERTEX_ARRAY'. If enabled, the vertex array is used when {@link gl:arrayElement/1} -%% , {@link gl:drawArrays/3} , {@link gl:multiDrawArrays/3} , {@link gl:drawElements/4} , see `glMultiDrawElements' -%% , or {@link gl:drawRangeElements/6} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glVertexPointer.xml">external</a> documentation. -spec vertexPointer(Size, Type, Stride, Ptr) -> 'ok' when Size :: integer(),Type :: enum(),Stride :: integer(),Ptr :: offset()|mem(). vertexPointer(Size,Type,Stride,Ptr) when is_integer(Ptr) -> cast(5186, <<Size:?GLint,Type:?GLenum,Stride:?GLsizei,Ptr:?GLuint>>); @@ -3918,22 +1919,7 @@ vertexPointer(Size,Type,Stride,Ptr) -> %% to be packed into a single array or stored in separate arrays. (Single-array storage may %% be more efficient on some implementations; see {@link gl:interleavedArrays/3} .) %% -%% If a non-zero named buffer object is bound to the `?GL_ARRAY_BUFFER' target (see {@link gl:bindBuffer/2} -%% ) while a normal array is specified, `Pointer' is treated as a byte offset into the -%% buffer object's data store. Also, the buffer object binding (`?GL_ARRAY_BUFFER_BINDING' -%% ) is saved as normal vertex array client-side state (`?GL_NORMAL_ARRAY_BUFFER_BINDING' -%% ). -%% -%% When a normal array is specified, `Type' , `Stride' , and `Pointer' are -%% saved as client-side state, in addition to the current vertex array buffer object binding. -%% -%% -%% To enable and disable the normal array, call {@link gl:enableClientState/1} and {@link gl:enableClientState/1} -%% with the argument `?GL_NORMAL_ARRAY'. If enabled, the normal array is used when {@link gl:drawArrays/3} -%% , {@link gl:multiDrawArrays/3} , {@link gl:drawElements/4} , see `glMultiDrawElements', {@link gl:drawRangeElements/6} -%% , or {@link gl:arrayElement/1} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glNormalPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glNormalPointer.xml">external</a> documentation. -spec normalPointer(Type, Stride, Ptr) -> 'ok' when Type :: enum(),Stride :: integer(),Ptr :: offset()|mem(). normalPointer(Type,Stride,Ptr) when is_integer(Ptr) -> cast(5188, <<Type:?GLenum,Stride:?GLsizei,Ptr:?GLuint>>); @@ -3950,22 +1936,7 @@ normalPointer(Type,Stride,Ptr) -> %% to be packed into a single array or stored in separate arrays. (Single-array storage may %% be more efficient on some implementations; see {@link gl:interleavedArrays/3} .) %% -%% If a non-zero named buffer object is bound to the `?GL_ARRAY_BUFFER' target (see {@link gl:bindBuffer/2} -%% ) while a color array is specified, `Pointer' is treated as a byte offset into the -%% buffer object's data store. Also, the buffer object binding (`?GL_ARRAY_BUFFER_BINDING' -%% ) is saved as color vertex array client-side state (`?GL_COLOR_ARRAY_BUFFER_BINDING'). -%% -%% -%% When a color array is specified, `Size' , `Type' , `Stride' , and `Pointer' -%% are saved as client-side state, in addition to the current vertex array buffer object -%% binding. -%% -%% To enable and disable the color array, call {@link gl:enableClientState/1} and {@link gl:enableClientState/1} -%% with the argument `?GL_COLOR_ARRAY'. If enabled, the color array is used when {@link gl:drawArrays/3} -%% , {@link gl:multiDrawArrays/3} , {@link gl:drawElements/4} , see `glMultiDrawElements', {@link gl:drawRangeElements/6} -%% , or {@link gl:arrayElement/1} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glColorPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glColorPointer.xml">external</a> documentation. -spec colorPointer(Size, Type, Stride, Ptr) -> 'ok' when Size :: integer(),Type :: enum(),Stride :: integer(),Ptr :: offset()|mem(). colorPointer(Size,Type,Stride,Ptr) when is_integer(Ptr) -> cast(5190, <<Size:?GLint,Type:?GLenum,Stride:?GLsizei,Ptr:?GLuint>>); @@ -3980,22 +1951,7 @@ colorPointer(Size,Type,Stride,Ptr) -> %% specifies the byte stride from one color index to the next, allowing vertices and attributes %% to be packed into a single array or stored in separate arrays. %% -%% If a non-zero named buffer object is bound to the `?GL_ARRAY_BUFFER' target (see {@link gl:bindBuffer/2} -%% ) while a color index array is specified, `Pointer' is treated as a byte offset into -%% the buffer object's data store. Also, the buffer object binding (`?GL_ARRAY_BUFFER_BINDING' -%% ) is saved as color index vertex array client-side state (`?GL_INDEX_ARRAY_BUFFER_BINDING' -%% ). -%% -%% When a color index array is specified, `Type' , `Stride' , and `Pointer' -%% are saved as client-side state, in addition to the current vertex array buffer object -%% binding. -%% -%% To enable and disable the color index array, call {@link gl:enableClientState/1} and {@link gl:enableClientState/1} -%% with the argument `?GL_INDEX_ARRAY'. If enabled, the color index array is used when -%% {@link gl:drawArrays/3} , {@link gl:multiDrawArrays/3} , {@link gl:drawElements/4} , see `glMultiDrawElements' -%% , {@link gl:drawRangeElements/6} , or {@link gl:arrayElement/1} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIndexPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glIndexPointer.xml">external</a> documentation. -spec indexPointer(Type, Stride, Ptr) -> 'ok' when Type :: enum(),Stride :: integer(),Ptr :: offset()|mem(). indexPointer(Type,Stride,Ptr) when is_integer(Ptr) -> cast(5192, <<Type:?GLenum,Stride:?GLsizei,Ptr:?GLuint>>); @@ -4013,23 +1969,7 @@ indexPointer(Type,Stride,Ptr) -> %% array or stored in separate arrays. (Single-array storage may be more efficient on some %% implementations; see {@link gl:interleavedArrays/3} .) %% -%% If a non-zero named buffer object is bound to the `?GL_ARRAY_BUFFER' target (see {@link gl:bindBuffer/2} -%% ) while a texture coordinate array is specified, `Pointer' is treated as a byte offset -%% into the buffer object's data store. Also, the buffer object binding (`?GL_ARRAY_BUFFER_BINDING' -%% ) is saved as texture coordinate vertex array client-side state (`?GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING' -%% ). -%% -%% When a texture coordinate array is specified, `Size' , `Type' , `Stride' , -%% and `Pointer' are saved as client-side state, in addition to the current vertex array -%% buffer object binding. -%% -%% To enable and disable a texture coordinate array, call {@link gl:enableClientState/1} -%% and {@link gl:enableClientState/1} with the argument `?GL_TEXTURE_COORD_ARRAY'. If -%% enabled, the texture coordinate array is used when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} -%% , {@link gl:multiDrawArrays/3} , {@link gl:drawElements/4} , see `glMultiDrawElements', -%% or {@link gl:drawRangeElements/6} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexCoordPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTexCoordPointer.xml">external</a> documentation. -spec texCoordPointer(Size, Type, Stride, Ptr) -> 'ok' when Size :: integer(),Type :: enum(),Stride :: integer(),Ptr :: offset()|mem(). texCoordPointer(Size,Type,Stride,Ptr) when is_integer(Ptr) -> cast(5194, <<Size:?GLint,Type:?GLenum,Stride:?GLsizei,Ptr:?GLuint>>); @@ -4044,21 +1984,7 @@ texCoordPointer(Size,Type,Stride,Ptr) -> %% flag to the next, allowing vertices and attributes to be packed into a single array or %% stored in separate arrays. %% -%% If a non-zero named buffer object is bound to the `?GL_ARRAY_BUFFER' target (see {@link gl:bindBuffer/2} -%% ) while an edge flag array is specified, `Pointer' is treated as a byte offset into -%% the buffer object's data store. Also, the buffer object binding (`?GL_ARRAY_BUFFER_BINDING' -%% ) is saved as edge flag vertex array client-side state (`?GL_EDGE_FLAG_ARRAY_BUFFER_BINDING' -%% ). -%% -%% When an edge flag array is specified, `Stride' and `Pointer' are saved as client-side -%% state, in addition to the current vertex array buffer object binding. -%% -%% To enable and disable the edge flag array, call {@link gl:enableClientState/1} and {@link gl:enableClientState/1} -%% with the argument `?GL_EDGE_FLAG_ARRAY'. If enabled, the edge flag array is used -%% when {@link gl:drawArrays/3} , {@link gl:multiDrawArrays/3} , {@link gl:drawElements/4} , see `glMultiDrawElements' -%% , {@link gl:drawRangeElements/6} , or {@link gl:arrayElement/1} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEdgeFlagPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEdgeFlagPointer.xml">external</a> documentation. -spec edgeFlagPointer(Stride, Ptr) -> 'ok' when Stride :: integer(),Ptr :: offset()|mem(). edgeFlagPointer(Stride,Ptr) when is_integer(Ptr) -> cast(5196, <<Stride:?GLsizei,Ptr:?GLuint>>); @@ -4075,18 +2001,7 @@ edgeFlagPointer(Stride,Ptr) -> %% is not enabled, no drawing occurs but the attributes corresponding to the enabled arrays %% are modified. %% -%% Use ``gl:arrayElement'' to construct primitives by indexing vertex data, rather than -%% by streaming through arrays of data in first-to-last order. Because each call specifies -%% only a single vertex, it is possible to explicitly specify per-primitive attributes such -%% as a single normal for each triangle. -%% -%% Changes made to array data between the execution of {@link gl:'begin'/1} and the corresponding -%% execution of {@link gl:'begin'/1} may affect calls to ``gl:arrayElement'' that are made within -%% the same {@link gl:'begin'/1} / {@link gl:'begin'/1} period in nonsequential ways. That is, a call -%% to ``gl:arrayElement'' that precedes a change to array data may access the changed data, -%% and a call that follows a change to array data may access original data. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glArrayElement.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glArrayElement.xml">external</a> documentation. -spec arrayElement(I) -> 'ok' when I :: integer(). arrayElement(I) -> cast(5198, <<I:?GLint>>). @@ -4099,15 +2014,7 @@ arrayElement(I) -> %% and use them to construct a sequence of primitives with a single call to ``gl:drawArrays'' %% . %% -%% When ``gl:drawArrays'' is called, it uses `Count' sequential elements from each -%% enabled array to construct a sequence of geometric primitives, beginning with element `First' -%% . `Mode' specifies what kind of primitives are constructed and how the array elements -%% construct those primitives. -%% -%% Vertex attributes that are modified by ``gl:drawArrays'' have an unspecified value -%% after ``gl:drawArrays'' returns. Attributes that aren't modified remain well defined. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawArrays.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml">external</a> documentation. -spec drawArrays(Mode, First, Count) -> 'ok' when Mode :: enum(),First :: integer(),Count :: integer(). drawArrays(Mode,First,Count) -> cast(5199, <<Mode:?GLenum,First:?GLint,Count:?GLsizei>>). @@ -4120,16 +2027,7 @@ drawArrays(Mode,First,Count) -> %% and so on, and use them to construct a sequence of primitives with a single call to ``gl:drawElements'' %% . %% -%% When ``gl:drawElements'' is called, it uses `Count' sequential elements from an -%% enabled array, starting at `Indices' to construct a sequence of geometric primitives. -%% `Mode' specifies what kind of primitives are constructed and how the array elements -%% construct these primitives. If more than one array is enabled, each is used. -%% -%% Vertex attributes that are modified by ``gl:drawElements'' have an unspecified value -%% after ``gl:drawElements'' returns. Attributes that aren't modified maintain their previous -%% values. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawElements.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawElements.xhtml">external</a> documentation. -spec drawElements(Mode, Count, Type, Indices) -> 'ok' when Mode :: enum(),Count :: integer(),Type :: enum(),Indices :: offset()|mem(). drawElements(Mode,Count,Type,Indices) when is_integer(Indices) -> cast(5200, <<Mode:?GLenum,Count:?GLsizei,Type:?GLenum,Indices:?GLuint>>); @@ -4143,21 +2041,7 @@ drawElements(Mode,Count,Type,Indices) -> %% and vertex arrays whose elements are part of a larger aggregate array element. For some %% implementations, this is more efficient than specifying the arrays separately. %% -%% If `Stride' is 0, the aggregate elements are stored consecutively. Otherwise, `Stride' -%% bytes occur between the beginning of one aggregate array element and the beginning of -%% the next aggregate array element. -%% -%% `Format' serves as a ``key'' describing the extraction of individual arrays from -%% the aggregate array. If `Format' contains a T, then texture coordinates are extracted -%% from the interleaved array. If C is present, color values are extracted. If N is present, -%% normal coordinates are extracted. Vertex coordinates are always extracted. -%% -%% The digits 2, 3, and 4 denote how many values are extracted. F indicates that values -%% are extracted as floating-point values. Colors may also be extracted as 4 unsigned bytes -%% if 4UB follows the C. If a color is extracted as 4 unsigned bytes, the vertex array element -%% which follows is located at the first possible floating-point aligned address. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glInterleavedArrays.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glInterleavedArrays.xml">external</a> documentation. -spec interleavedArrays(Format, Stride, Pointer) -> 'ok' when Format :: enum(),Stride :: integer(),Pointer :: offset()|mem(). interleavedArrays(Format,Stride,Pointer) when is_integer(Pointer) -> cast(5202, <<Format:?GLenum,Stride:?GLsizei,Pointer:?GLuint>>); @@ -4175,23 +2059,7 @@ interleavedArrays(Format,Stride,Pointer) -> %% result of lighting if lighting is enabled, or it is the current color at the time the %% vertex was specified if lighting is disabled. %% -%% Flat and smooth shading are indistinguishable for points. Starting when {@link gl:'begin'/1} -%% is issued and counting vertices and primitives from 1, the GL gives each flat-shaded line -%% segment i the computed color of vertex i+1, its second vertex. Counting similarly -%% from 1, the GL gives each flat-shaded polygon the computed color of the vertex listed -%% in the following table. This is the last vertex to specify the polygon in all cases except -%% single polygons, where the first vertex specifies the flat-shaded color. -%% -%% <table><tbody><tr><td>` Primitive Type of Polygon ' i</td><td>` Vertex '</td></tr> -%% </tbody><tbody><tr><td> Single polygon ( i== 1) </td><td> 1 </td></tr><tr><td> Triangle -%% strip </td><td> i+2</td></tr><tr><td> Triangle fan </td><td> i+2</td></tr><tr><td> Independent -%% triangle </td><td> 3 i</td></tr><tr><td> Quad strip </td><td> 2 i+2</td></tr><tr><td> -%% Independent quad </td><td> 4 i</td></tr></tbody></table> -%% -%% Flat and smooth shading are specified by ``gl:shadeModel'' with `Mode' set to `?GL_FLAT' -%% and `?GL_SMOOTH', respectively. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glShadeModel.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glShadeModel.xml">external</a> documentation. -spec shadeModel(Mode) -> 'ok' when Mode :: enum(). shadeModel(Mode) -> cast(5204, <<Mode:?GLenum>>). @@ -4204,88 +2072,7 @@ shadeModel(Mode) -> %% parameters, again by symbolic name. `Params' is either a single value or a pointer %% to an array that contains the new values. %% -%% To enable and disable lighting calculation, call {@link gl:enable/1} and {@link gl:enable/1} -%% with argument `?GL_LIGHTING'. Lighting is initially disabled. When it is enabled, -%% light sources that are enabled contribute to the lighting calculation. Light source i -%% is enabled and disabled using {@link gl:enable/1} and {@link gl:enable/1} with argument `?GL_LIGHT' -%% i. -%% -%% The ten light parameters are as follows: -%% -%% `?GL_AMBIENT': `Params' contains four integer or floating-point values that -%% specify the ambient RGBA intensity of the light. Integer values are mapped linearly such -%% that the most positive representable value maps to 1.0, and the most negative representable -%% value maps to -1.0. Floating-point values are mapped directly. Neither integer nor floating-point -%% values are clamped. The initial ambient light intensity is (0, 0, 0, 1). -%% -%% `?GL_DIFFUSE': `Params' contains four integer or floating-point values that -%% specify the diffuse RGBA intensity of the light. Integer values are mapped linearly such -%% that the most positive representable value maps to 1.0, and the most negative representable -%% value maps to -1.0. Floating-point values are mapped directly. Neither integer nor floating-point -%% values are clamped. The initial value for `?GL_LIGHT0' is (1, 1, 1, 1); for other -%% lights, the initial value is (0, 0, 0, 1). -%% -%% `?GL_SPECULAR': `Params' contains four integer or floating-point values that -%% specify the specular RGBA intensity of the light. Integer values are mapped linearly such -%% that the most positive representable value maps to 1.0, and the most negative representable -%% value maps to -1.0. Floating-point values are mapped directly. Neither integer nor floating-point -%% values are clamped. The initial value for `?GL_LIGHT0' is (1, 1, 1, 1); for other -%% lights, the initial value is (0, 0, 0, 1). -%% -%% `?GL_POSITION': `Params' contains four integer or floating-point values that -%% specify the position of the light in homogeneous object coordinates. Both integer and -%% floating-point values are mapped directly. Neither integer nor floating-point values are -%% clamped. -%% -%% The position is transformed by the modelview matrix when ``gl:light'' is called (just -%% as if it were a point), and it is stored in eye coordinates. If the w component of the -%% position is 0, the light is treated as a directional source. Diffuse and specular lighting -%% calculations take the light's direction, but not its actual position, into account, and -%% attenuation is disabled. Otherwise, diffuse and specular lighting calculations are based -%% on the actual location of the light in eye coordinates, and attenuation is enabled. The -%% initial position is (0, 0, 1, 0); thus, the initial light source is directional, parallel -%% to, and in the direction of the -z axis. -%% -%% `?GL_SPOT_DIRECTION': `Params' contains three integer or floating-point values -%% that specify the direction of the light in homogeneous object coordinates. Both integer -%% and floating-point values are mapped directly. Neither integer nor floating-point values -%% are clamped. -%% -%% The spot direction is transformed by the upper 3x3 of the modelview matrix when ``gl:light'' -%% is called, and it is stored in eye coordinates. It is significant only when `?GL_SPOT_CUTOFF' -%% is not 180, which it is initially. The initial direction is (0 0 -1). -%% -%% `?GL_SPOT_EXPONENT': `Params' is a single integer or floating-point value that -%% specifies the intensity distribution of the light. Integer and floating-point values are -%% mapped directly. Only values in the range [0 128] are accepted. -%% -%% Effective light intensity is attenuated by the cosine of the angle between the direction -%% of the light and the direction from the light to the vertex being lighted, raised to the -%% power of the spot exponent. Thus, higher spot exponents result in a more focused light -%% source, regardless of the spot cutoff angle (see `?GL_SPOT_CUTOFF', next paragraph). -%% The initial spot exponent is 0, resulting in uniform light distribution. -%% -%% `?GL_SPOT_CUTOFF': `Params' is a single integer or floating-point value that -%% specifies the maximum spread angle of a light source. Integer and floating-point values -%% are mapped directly. Only values in the range [0 90] and the special value 180 are accepted. -%% If the angle between the direction of the light and the direction from the light to the -%% vertex being lighted is greater than the spot cutoff angle, the light is completely masked. -%% Otherwise, its intensity is controlled by the spot exponent and the attenuation factors. -%% The initial spot cutoff is 180, resulting in uniform light distribution. -%% -%% `?GL_CONSTANT_ATTENUATION' -%% -%% `?GL_LINEAR_ATTENUATION' -%% -%% `?GL_QUADRATIC_ATTENUATION': `Params' is a single integer or floating-point -%% value that specifies one of the three light attenuation factors. Integer and floating-point -%% values are mapped directly. Only nonnegative values are accepted. If the light is positional, -%% rather than directional, its intensity is attenuated by the reciprocal of the sum of the -%% constant factor, the linear factor times the distance between the light and the vertex -%% being lighted, and the quadratic factor times the square of the same distance. The initial -%% attenuation factors are (1, 0, 0), resulting in no attenuation. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLight.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glLight.xml">external</a> documentation. -spec lightf(Light, Pname, Param) -> 'ok' when Light :: enum(),Pname :: enum(),Param :: float(). lightf(Light,Pname,Param) -> cast(5205, <<Light:?GLenum,Pname:?GLenum,Param:?GLfloat>>). @@ -4318,73 +2105,7 @@ lightiv(Light,Pname,Params) -> %% implementation dependent constant that is greater than or equal to eight. `Pname' %% specifies one of ten light source parameters, again by symbolic name. %% -%% The following parameters are defined: -%% -%% `?GL_AMBIENT': `Params' returns four integer or floating-point values representing -%% the ambient intensity of the light source. Integer values, when requested, are linearly -%% mapped from the internal floating-point representation such that 1.0 maps to the most -%% positive representable integer value, and -1.0 maps to the most negative representable -%% integer value. If the internal value is outside the range [-1 1], the corresponding integer -%% return value is undefined. The initial value is (0, 0, 0, 1). -%% -%% `?GL_DIFFUSE': `Params' returns four integer or floating-point values representing -%% the diffuse intensity of the light source. Integer values, when requested, are linearly -%% mapped from the internal floating-point representation such that 1.0 maps to the most -%% positive representable integer value, and -1.0 maps to the most negative representable -%% integer value. If the internal value is outside the range [-1 1], the corresponding integer -%% return value is undefined. The initial value for `?GL_LIGHT0' is (1, 1, 1, 1); for -%% other lights, the initial value is (0, 0, 0, 0). -%% -%% `?GL_SPECULAR': `Params' returns four integer or floating-point values representing -%% the specular intensity of the light source. Integer values, when requested, are linearly -%% mapped from the internal floating-point representation such that 1.0 maps to the most -%% positive representable integer value, and -1.0 maps to the most negative representable -%% integer value. If the internal value is outside the range [-1 1], the corresponding integer -%% return value is undefined. The initial value for `?GL_LIGHT0' is (1, 1, 1, 1); for -%% other lights, the initial value is (0, 0, 0, 0). -%% -%% `?GL_POSITION': `Params' returns four integer or floating-point values representing -%% the position of the light source. Integer values, when requested, are computed by rounding -%% the internal floating-point values to the nearest integer value. The returned values are -%% those maintained in eye coordinates. They will not be equal to the values specified using -%% {@link gl:lightf/3} , unless the modelview matrix was identity at the time {@link gl:lightf/3} -%% was called. The initial value is (0, 0, 1, 0). -%% -%% `?GL_SPOT_DIRECTION': `Params' returns three integer or floating-point values -%% representing the direction of the light source. Integer values, when requested, are computed -%% by rounding the internal floating-point values to the nearest integer value. The returned -%% values are those maintained in eye coordinates. They will not be equal to the values specified -%% using {@link gl:lightf/3} , unless the modelview matrix was identity at the time {@link gl:lightf/3} -%% was called. Although spot direction is normalized before being used in the lighting equation, -%% the returned values are the transformed versions of the specified values prior to normalization. -%% The initial value is (0 0 -1). -%% -%% `?GL_SPOT_EXPONENT': `Params' returns a single integer or floating-point value -%% representing the spot exponent of the light. An integer value, when requested, is computed -%% by rounding the internal floating-point representation to the nearest integer. The initial -%% value is 0. -%% -%% `?GL_SPOT_CUTOFF': `Params' returns a single integer or floating-point value -%% representing the spot cutoff angle of the light. An integer value, when requested, is -%% computed by rounding the internal floating-point representation to the nearest integer. -%% The initial value is 180. -%% -%% `?GL_CONSTANT_ATTENUATION': `Params' returns a single integer or floating-point -%% value representing the constant (not distance-related) attenuation of the light. An integer -%% value, when requested, is computed by rounding the internal floating-point representation -%% to the nearest integer. The initial value is 1. -%% -%% `?GL_LINEAR_ATTENUATION': `Params' returns a single integer or floating-point -%% value representing the linear attenuation of the light. An integer value, when requested, -%% is computed by rounding the internal floating-point representation to the nearest integer. -%% The initial value is 0. -%% -%% `?GL_QUADRATIC_ATTENUATION': `Params' returns a single integer or floating-point -%% value representing the quadratic attenuation of the light. An integer value, when requested, -%% is computed by rounding the internal floating-point representation to the nearest integer. -%% The initial value is 0. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetLight.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetLight.xml">external</a> documentation. -spec getLightfv(Light, Pname) -> {float(),float(),float(),float()} when Light :: enum(),Pname :: enum(). getLightfv(Light,Pname) -> call(5209, <<Light:?GLenum,Pname:?GLenum>>). @@ -4400,63 +2121,7 @@ getLightiv(Light,Pname) -> %% ``gl:lightModel'' sets the lighting model parameter. `Pname' names a parameter %% and `Params' gives the new value. There are three lighting model parameters: %% -%% `?GL_LIGHT_MODEL_AMBIENT': `Params' contains four integer or floating-point -%% values that specify the ambient RGBA intensity of the entire scene. Integer values are -%% mapped linearly such that the most positive representable value maps to 1.0, and the most -%% negative representable value maps to -1.0. Floating-point values are mapped directly. -%% Neither integer nor floating-point values are clamped. The initial ambient scene intensity -%% is (0.2, 0.2, 0.2, 1.0). -%% -%% `?GL_LIGHT_MODEL_COLOR_CONTROL': `Params' must be either `?GL_SEPARATE_SPECULAR_COLOR' -%% or `?GL_SINGLE_COLOR'. `?GL_SINGLE_COLOR' specifies that a single color is -%% generated from the lighting computation for a vertex. `?GL_SEPARATE_SPECULAR_COLOR' -%% specifies that the specular color computation of lighting be stored separately from the -%% remainder of the lighting computation. The specular color is summed into the generated -%% fragment's color after the application of texture mapping (if enabled). The initial value -%% is `?GL_SINGLE_COLOR'. -%% -%% `?GL_LIGHT_MODEL_LOCAL_VIEWER': `Params' is a single integer or floating-point -%% value that specifies how specular reflection angles are computed. If `Params' is -%% 0 (or 0.0), specular reflection angles take the view direction to be parallel to and in -%% the direction of the -`z' axis, regardless of the location of the vertex in eye coordinates. -%% Otherwise, specular reflections are computed from the origin of the eye coordinate system. -%% The initial value is 0. -%% -%% `?GL_LIGHT_MODEL_TWO_SIDE': `Params' is a single integer or floating-point value -%% that specifies whether one- or two-sided lighting calculations are done for polygons. -%% It has no effect on the lighting calculations for points, lines, or bitmaps. If `Params' -%% is 0 (or 0.0), one-sided lighting is specified, and only the `front' material parameters -%% are used in the lighting equation. Otherwise, two-sided lighting is specified. In this -%% case, vertices of back-facing polygons are lighted using the `back' material parameters -%% and have their normals reversed before the lighting equation is evaluated. Vertices of -%% front-facing polygons are always lighted using the `front' material parameters, with -%% no change to their normals. The initial value is 0. -%% -%% In RGBA mode, the lighted color of a vertex is the sum of the material emission intensity, -%% the product of the material ambient reflectance and the lighting model full-scene ambient -%% intensity, and the contribution of each enabled light source. Each light source contributes -%% the sum of three terms: ambient, diffuse, and specular. The ambient light source contribution -%% is the product of the material ambient reflectance and the light's ambient intensity. -%% The diffuse light source contribution is the product of the material diffuse reflectance, -%% the light's diffuse intensity, and the dot product of the vertex's normal with the normalized -%% vector from the vertex to the light source. The specular light source contribution is -%% the product of the material specular reflectance, the light's specular intensity, and -%% the dot product of the normalized vertex-to-eye and vertex-to-light vectors, raised to -%% the power of the shininess of the material. All three light source contributions are attenuated -%% equally based on the distance from the vertex to the light source and on light source -%% direction, spread exponent, and spread cutoff angle. All dot products are replaced with -%% 0 if they evaluate to a negative value. -%% -%% The alpha component of the resulting lighted color is set to the alpha value of the material -%% diffuse reflectance. -%% -%% In color index mode, the value of the lighted index of a vertex ranges from the ambient -%% to the specular values passed to {@link gl:materialf/3} using `?GL_COLOR_INDEXES'. -%% Diffuse and specular coefficients, computed with a (.30, .59, .11) weighting of the lights' -%% colors, the shininess of the material, and the same reflection and attenuation equations -%% as in the RGBA case, determine how much above ambient the resulting index is. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLightModel.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glLightModel.xml">external</a> documentation. -spec lightModelf(Pname, Param) -> 'ok' when Pname :: enum(),Param :: float(). lightModelf(Pname,Param) -> cast(5211, <<Pname:?GLenum,Param:?GLfloat>>). @@ -4490,60 +2155,7 @@ lightModeliv(Pname,Params) -> %% to shade back-facing polygons only when two-sided lighting is enabled. Refer to the {@link gl:lightModelf/2} %% reference page for details concerning one- and two-sided lighting calculations. %% -%% ``gl:material'' takes three arguments. The first, `Face' , specifies whether the `?GL_FRONT' -%% materials, the `?GL_BACK' materials, or both `?GL_FRONT_AND_BACK' materials -%% will be modified. The second, `Pname' , specifies which of several parameters in one -%% or both sets will be modified. The third, `Params' , specifies what value or values -%% will be assigned to the specified parameter. -%% -%% Material parameters are used in the lighting equation that is optionally applied to each -%% vertex. The equation is discussed in the {@link gl:lightModelf/2} reference page. The parameters -%% that can be specified using ``gl:material'', and their interpretations by the lighting -%% equation, are as follows: -%% -%% `?GL_AMBIENT': `Params' contains four integer or floating-point values that -%% specify the ambient RGBA reflectance of the material. Integer values are mapped linearly -%% such that the most positive representable value maps to 1.0, and the most negative representable -%% value maps to -1.0. Floating-point values are mapped directly. Neither integer nor floating-point -%% values are clamped. The initial ambient reflectance for both front- and back-facing materials -%% is (0.2, 0.2, 0.2, 1.0). -%% -%% `?GL_DIFFUSE': `Params' contains four integer or floating-point values that -%% specify the diffuse RGBA reflectance of the material. Integer values are mapped linearly -%% such that the most positive representable value maps to 1.0, and the most negative representable -%% value maps to -1.0. Floating-point values are mapped directly. Neither integer nor floating-point -%% values are clamped. The initial diffuse reflectance for both front- and back-facing materials -%% is (0.8, 0.8, 0.8, 1.0). -%% -%% `?GL_SPECULAR': `Params' contains four integer or floating-point values that -%% specify the specular RGBA reflectance of the material. Integer values are mapped linearly -%% such that the most positive representable value maps to 1.0, and the most negative representable -%% value maps to -1.0. Floating-point values are mapped directly. Neither integer nor floating-point -%% values are clamped. The initial specular reflectance for both front- and back-facing materials -%% is (0, 0, 0, 1). -%% -%% `?GL_EMISSION': `Params' contains four integer or floating-point values that -%% specify the RGBA emitted light intensity of the material. Integer values are mapped linearly -%% such that the most positive representable value maps to 1.0, and the most negative representable -%% value maps to -1.0. Floating-point values are mapped directly. Neither integer nor floating-point -%% values are clamped. The initial emission intensity for both front- and back-facing materials -%% is (0, 0, 0, 1). -%% -%% `?GL_SHININESS': `Params' is a single integer or floating-point value that specifies -%% the RGBA specular exponent of the material. Integer and floating-point values are mapped -%% directly. Only values in the range [0 128] are accepted. The initial specular exponent for both -%% front- and back-facing materials is 0. -%% -%% `?GL_AMBIENT_AND_DIFFUSE': Equivalent to calling ``gl:material'' twice with the -%% same parameter values, once with `?GL_AMBIENT' and once with `?GL_DIFFUSE'. -%% -%% `?GL_COLOR_INDEXES': `Params' contains three integer or floating-point values -%% specifying the color indices for ambient, diffuse, and specular lighting. These three -%% values, and `?GL_SHININESS', are the only material values used by the color index -%% mode lighting equation. Refer to the {@link gl:lightModelf/2} reference page for a discussion -%% of color index lighting. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMaterial.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMaterial.xml">external</a> documentation. -spec materialf(Face, Pname, Param) -> 'ok' when Face :: enum(),Pname :: enum(),Param :: float(). materialf(Face,Pname,Param) -> cast(5215, <<Face:?GLenum,Pname:?GLenum,Param:?GLfloat>>). @@ -4573,46 +2185,7 @@ materialiv(Face,Pname,Params) -> %% ``gl:getMaterial'' returns in `Params' the value or values of parameter `Pname' %% of material `Face' . Six parameters are defined: %% -%% `?GL_AMBIENT': `Params' returns four integer or floating-point values representing -%% the ambient reflectance of the material. Integer values, when requested, are linearly -%% mapped from the internal floating-point representation such that 1.0 maps to the most -%% positive representable integer value, and -1.0 maps to the most negative representable -%% integer value. If the internal value is outside the range [-1 1], the corresponding integer -%% return value is undefined. The initial value is (0.2, 0.2, 0.2, 1.0) -%% -%% `?GL_DIFFUSE': `Params' returns four integer or floating-point values representing -%% the diffuse reflectance of the material. Integer values, when requested, are linearly -%% mapped from the internal floating-point representation such that 1.0 maps to the most -%% positive representable integer value, and -1.0 maps to the most negative representable -%% integer value. If the internal value is outside the range [-1 1], the corresponding integer -%% return value is undefined. The initial value is (0.8, 0.8, 0.8, 1.0). -%% -%% `?GL_SPECULAR': `Params' returns four integer or floating-point values representing -%% the specular reflectance of the material. Integer values, when requested, are linearly -%% mapped from the internal floating-point representation such that 1.0 maps to the most -%% positive representable integer value, and -1.0 maps to the most negative representable -%% integer value. If the internal value is outside the range [-1 1], the corresponding integer -%% return value is undefined. The initial value is (0, 0, 0, 1). -%% -%% `?GL_EMISSION': `Params' returns four integer or floating-point values representing -%% the emitted light intensity of the material. Integer values, when requested, are linearly -%% mapped from the internal floating-point representation such that 1.0 maps to the most -%% positive representable integer value, and -1.0 maps to the most negative representable -%% integer value. If the internal value is outside the range [-1 1], the corresponding integer -%% return value is undefined. The initial value is (0, 0, 0, 1). -%% -%% `?GL_SHININESS': `Params' returns one integer or floating-point value representing -%% the specular exponent of the material. Integer values, when requested, are computed by -%% rounding the internal floating-point value to the nearest integer value. The initial value -%% is 0. -%% -%% `?GL_COLOR_INDEXES': `Params' returns three integer or floating-point values -%% representing the ambient, diffuse, and specular indices of the material. These indices -%% are used only for color index lighting. (All the other parameters are used only for RGBA -%% lighting.) Integer values, when requested, are computed by rounding the internal floating-point -%% values to the nearest integer values. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetMaterial.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetMaterial.xml">external</a> documentation. -spec getMaterialfv(Face, Pname) -> {float(),float(),float(),float()} when Face :: enum(),Pname :: enum(). getMaterialfv(Face,Pname) -> call(5219, <<Face:?GLenum,Pname:?GLenum>>). @@ -4629,11 +2202,7 @@ getMaterialiv(Face,Pname) -> %% is enabled, the material parameter or parameters specified by `Mode' , of the material %% or materials specified by `Face' , track the current color at all times. %% -%% To enable and disable `?GL_COLOR_MATERIAL', call {@link gl:enable/1} and {@link gl:enable/1} -%% with argument `?GL_COLOR_MATERIAL'. `?GL_COLOR_MATERIAL' is initially disabled. -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glColorMaterial.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glColorMaterial.xml">external</a> documentation. -spec colorMaterial(Face, Mode) -> 'ok' when Face :: enum(),Mode :: enum(). colorMaterial(Face,Mode) -> cast(5221, <<Face:?GLenum,Mode:?GLenum>>). @@ -4645,17 +2214,7 @@ colorMaterial(Face,Mode) -> %% position, and a given element is in the mth row and nth column of the pixel rectangle, %% then pixels whose centers are in the rectangle with corners at %% -%% ( xr+n. xfactor, yr+m. yfactor) -%% -%% ( xr+(n+1). xfactor, yr+(m+1). yfactor) -%% -%% are candidates for replacement. Any pixel whose center lies on the bottom or left edge -%% of this rectangular region is also modified. -%% -%% Pixel zoom factors are not limited to positive values. Negative zoom factors reflect -%% the resulting image about the current raster position. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPixelZoom.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPixelZoom.xml">external</a> documentation. -spec pixelZoom(Xfactor, Yfactor) -> 'ok' when Xfactor :: float(),Yfactor :: float(). pixelZoom(Xfactor,Yfactor) -> cast(5222, <<Xfactor:?GLfloat,Yfactor:?GLfloat>>). @@ -4669,181 +2228,7 @@ pixelZoom(Xfactor,Yfactor) -> %% , {@link gl:compressedTexSubImage1D/7} , {@link gl:compressedTexSubImage2D/9} or {@link gl:compressedTexSubImage1D/7} %% . %% -%% `Pname' is a symbolic constant indicating the parameter to be set, and `Param' -%% is the new value. Six of the twelve storage parameters affect how pixel data is returned -%% to client memory. They are as follows: -%% -%% `?GL_PACK_SWAP_BYTES': If true, byte ordering for multibyte color components, depth -%% components, or stencil indices is reversed. That is, if a four-byte component consists -%% of bytes b 0, b 1, b 2, b 3, it is stored in memory as b 3, b 2, b 1, b 0 if `?GL_PACK_SWAP_BYTES' -%% is true. `?GL_PACK_SWAP_BYTES' has no effect on the memory order of components within -%% a pixel, only on the order of bytes within components or indices. For example, the three -%% components of a `?GL_RGB' format pixel are always stored with red first, green second, -%% and blue third, regardless of the value of `?GL_PACK_SWAP_BYTES'. -%% -%% `?GL_PACK_LSB_FIRST': If true, bits are ordered within a byte from least significant -%% to most significant; otherwise, the first bit in each byte is the most significant one. -%% -%% `?GL_PACK_ROW_LENGTH': If greater than 0, `?GL_PACK_ROW_LENGTH' defines the -%% number of pixels in a row. If the first pixel of a row is placed at location p in memory, -%% then the location of the first pixel of the next row is obtained by skipping -%% -%% k={n l(a/s) |(s n l)/a| s>= a s< a) -%% -%% components or indices, where n is the number of components or indices in a pixel, l -%% is the number of pixels in a row (`?GL_PACK_ROW_LENGTH' if it is greater than 0, -%% the width argument to the pixel routine otherwise), a is the value of `?GL_PACK_ALIGNMENT' -%% , and s is the size, in bytes, of a single component (if a< s, then it is as if a= -%% s). In the case of 1-bit values, the location of the next row is obtained by skipping -%% -%% k=8 a |(n l)/(8 a)| -%% -%% components or indices. -%% -%% The word `component' in this description refers to the nonindex values red, green, -%% blue, alpha, and depth. Storage format `?GL_RGB', for example, has three components -%% per pixel: first red, then green, and finally blue. -%% -%% `?GL_PACK_IMAGE_HEIGHT': If greater than 0, `?GL_PACK_IMAGE_HEIGHT' defines -%% the number of pixels in an image three-dimensional texture volume, where ``image'' is -%% defined by all pixels sharing the same third dimension index. If the first pixel of a -%% row is placed at location p in memory, then the location of the first pixel of the next -%% row is obtained by skipping -%% -%% k={n l h(a/s) |(s n l h)/a| s>= a s< a) -%% -%% components or indices, where n is the number of components or indices in a pixel, l -%% is the number of pixels in a row (`?GL_PACK_ROW_LENGTH' if it is greater than 0, -%% the width argument to {@link gl:texImage3D/10} otherwise), h is the number of rows in -%% a pixel image (`?GL_PACK_IMAGE_HEIGHT' if it is greater than 0, the height argument -%% to the {@link gl:texImage3D/10} routine otherwise), a is the value of `?GL_PACK_ALIGNMENT' -%% , and s is the size, in bytes, of a single component (if a< s, then it is as if -%% a=s). -%% -%% The word `component' in this description refers to the nonindex values red, green, -%% blue, alpha, and depth. Storage format `?GL_RGB', for example, has three components -%% per pixel: first red, then green, and finally blue. -%% -%% `?GL_PACK_SKIP_PIXELS', `?GL_PACK_SKIP_ROWS', and `?GL_PACK_SKIP_IMAGES' -%% -%% These values are provided as a convenience to the programmer; they provide no functionality -%% that cannot be duplicated simply by incrementing the pointer passed to {@link gl:readPixels/7} -%% . Setting `?GL_PACK_SKIP_PIXELS' to i is equivalent to incrementing the pointer -%% by i n components or indices, where n is the number of components or indices in each -%% pixel. Setting `?GL_PACK_SKIP_ROWS' to j is equivalent to incrementing the pointer -%% by j m components or indices, where m is the number of components or indices per -%% row, as just computed in the `?GL_PACK_ROW_LENGTH' section. Setting `?GL_PACK_SKIP_IMAGES' -%% to k is equivalent to incrementing the pointer by k p, where p is the number of -%% components or indices per image, as computed in the `?GL_PACK_IMAGE_HEIGHT' section. -%% -%% -%% `?GL_PACK_ALIGNMENT': Specifies the alignment requirements for the start of each -%% pixel row in memory. The allowable values are 1 (byte-alignment), 2 (rows aligned to even-numbered -%% bytes), 4 (word-alignment), and 8 (rows start on double-word boundaries). -%% -%% The other six of the twelve storage parameters affect how pixel data is read from client -%% memory. These values are significant for {@link gl:texImage1D/8} , {@link gl:texImage2D/9} , {@link gl:texImage3D/10} -%% , {@link gl:texSubImage1D/7} , {@link gl:texSubImage1D/7} , and {@link gl:texSubImage1D/7} -%% -%% They are as follows: -%% -%% `?GL_UNPACK_SWAP_BYTES': If true, byte ordering for multibyte color components, -%% depth components, or stencil indices is reversed. That is, if a four-byte component consists -%% of bytes b 0, b 1, b 2, b 3, it is taken from memory as b 3, b 2, b 1, b 0 if `?GL_UNPACK_SWAP_BYTES' -%% is true. `?GL_UNPACK_SWAP_BYTES' has no effect on the memory order of components -%% within a pixel, only on the order of bytes within components or indices. For example, -%% the three components of a `?GL_RGB' format pixel are always stored with red first, -%% green second, and blue third, regardless of the value of `?GL_UNPACK_SWAP_BYTES'. -%% -%% `?GL_UNPACK_LSB_FIRST': If true, bits are ordered within a byte from least significant -%% to most significant; otherwise, the first bit in each byte is the most significant one. -%% -%% `?GL_UNPACK_ROW_LENGTH': If greater than 0, `?GL_UNPACK_ROW_LENGTH' defines -%% the number of pixels in a row. If the first pixel of a row is placed at location p in -%% memory, then the location of the first pixel of the next row is obtained by skipping -%% -%% k={n l(a/s) |(s n l)/a| s>= a s< a) -%% -%% components or indices, where n is the number of components or indices in a pixel, l -%% is the number of pixels in a row (`?GL_UNPACK_ROW_LENGTH' if it is greater than 0, -%% the width argument to the pixel routine otherwise), a is the value of `?GL_UNPACK_ALIGNMENT' -%% , and s is the size, in bytes, of a single component (if a< s, then it is as if a= -%% s). In the case of 1-bit values, the location of the next row is obtained by skipping -%% -%% k=8 a |(n l)/(8 a)| -%% -%% components or indices. -%% -%% The word `component' in this description refers to the nonindex values red, green, -%% blue, alpha, and depth. Storage format `?GL_RGB', for example, has three components -%% per pixel: first red, then green, and finally blue. -%% -%% `?GL_UNPACK_IMAGE_HEIGHT': If greater than 0, `?GL_UNPACK_IMAGE_HEIGHT' defines -%% the number of pixels in an image of a three-dimensional texture volume. Where ``image'' -%% is defined by all pixel sharing the same third dimension index. If the first pixel of -%% a row is placed at location p in memory, then the location of the first pixel of the -%% next row is obtained by skipping -%% -%% k={n l h(a/s) |(s n l h)/a| s>= a s< a) -%% -%% components or indices, where n is the number of components or indices in a pixel, l -%% is the number of pixels in a row (`?GL_UNPACK_ROW_LENGTH' if it is greater than 0, -%% the width argument to {@link gl:texImage3D/10} otherwise), h is the number of rows in -%% an image (`?GL_UNPACK_IMAGE_HEIGHT' if it is greater than 0, the height argument -%% to {@link gl:texImage3D/10} otherwise), a is the value of `?GL_UNPACK_ALIGNMENT', -%% and s is the size, in bytes, of a single component (if a< s, then it is as if a=s). -%% -%% -%% The word `component' in this description refers to the nonindex values red, green, -%% blue, alpha, and depth. Storage format `?GL_RGB', for example, has three components -%% per pixel: first red, then green, and finally blue. -%% -%% `?GL_UNPACK_SKIP_PIXELS' and `?GL_UNPACK_SKIP_ROWS' -%% -%% These values are provided as a convenience to the programmer; they provide no functionality -%% that cannot be duplicated by incrementing the pointer passed to {@link gl:texImage1D/8} , {@link gl:texImage2D/9} -%% , {@link gl:texSubImage1D/7} or {@link gl:texSubImage1D/7} . Setting `?GL_UNPACK_SKIP_PIXELS' -%% to i is equivalent to incrementing the pointer by i n components or indices, where -%% n is the number of components or indices in each pixel. Setting `?GL_UNPACK_SKIP_ROWS' -%% to j is equivalent to incrementing the pointer by j k components or indices, where -%% k is the number of components or indices per row, as just computed in the `?GL_UNPACK_ROW_LENGTH' -%% section. -%% -%% `?GL_UNPACK_ALIGNMENT': Specifies the alignment requirements for the start of each -%% pixel row in memory. The allowable values are 1 (byte-alignment), 2 (rows aligned to even-numbered -%% bytes), 4 (word-alignment), and 8 (rows start on double-word boundaries). -%% -%% The following table gives the type, initial value, and range of valid values for each -%% storage parameter that can be set with ``gl:pixelStore''. -%% -%% <table><tbody><tr><td> `Pname' </td><td>` Type '</td><td>` Initial Value '</td> -%% <td>` Valid Range '</td></tr></tbody><tbody><tr><td>`?GL_PACK_SWAP_BYTES'</td><td> -%% boolean </td><td> false </td><td> true or false </td></tr><tr><td>`?GL_PACK_LSB_FIRST' -%% </td><td> boolean </td><td> false </td><td> true or false </td></tr><tr><td>`?GL_PACK_ROW_LENGTH' -%% </td><td> integer </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_PACK_IMAGE_HEIGHT'</td> -%% <td> integer </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_PACK_SKIP_ROWS'</td><td> -%% integer </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_PACK_SKIP_PIXELS'</td><td> integer -%% </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_PACK_SKIP_IMAGES'</td><td> integer </td><td> -%% 0 </td><td>[0)</td></tr><tr><td>`?GL_PACK_ALIGNMENT'</td><td> integer </td><td> 4 </td> -%% <td> 1, 2, 4, or 8 </td></tr><tr><td>`?GL_UNPACK_SWAP_BYTES'</td><td> boolean </td><td> -%% false </td><td> true or false </td></tr><tr><td>`?GL_UNPACK_LSB_FIRST'</td><td> -%% boolean </td><td> false </td><td> true or false </td></tr><tr><td>`?GL_UNPACK_ROW_LENGTH' -%% </td><td> integer </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_UNPACK_IMAGE_HEIGHT'</td> -%% <td> integer </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_UNPACK_SKIP_ROWS'</td><td> -%% integer </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_UNPACK_SKIP_PIXELS'</td><td> -%% integer </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_UNPACK_SKIP_IMAGES'</td><td> -%% integer </td><td> 0 </td><td>[0)</td></tr><tr><td>`?GL_UNPACK_ALIGNMENT'</td><td> integer -%% </td><td> 4 </td><td> 1, 2, 4, or 8 </td></tr></tbody></table> -%% -%% ``gl:pixelStoref'' can be used to set any pixel store parameter. If the parameter type -%% is boolean, then if `Param' is 0, the parameter is false; otherwise it is set to -%% true. If `Pname' is a integer type parameter, `Param' is rounded to the nearest -%% integer. -%% -%% Likewise, ``gl:pixelStorei'' can also be used to set any of the pixel store parameters. -%% Boolean parameters are set to false if `Param' is 0 and true otherwise. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPixelStore.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPixelStore.xhtml">external</a> documentation. -spec pixelStoref(Pname, Param) -> 'ok' when Pname :: enum(),Param :: float(). pixelStoref(Pname,Param) -> cast(5223, <<Pname:?GLenum,Param:?GLfloat>>). @@ -4874,134 +2259,7 @@ pixelStorei(Pname,Param) -> %% ) control the unpacking of pixels being read from client memory and the packing of pixels %% being written back into client memory. %% -%% Pixel transfer operations handle four fundamental pixel types: `color', `color index' -%% , `depth', and `stencil'. `Color' pixels consist of four floating-point -%% values with unspecified mantissa and exponent sizes, scaled such that 0 represents zero -%% intensity and 1 represents full intensity. `Color indices' comprise a single fixed-point -%% value, with unspecified precision to the right of the binary point. `Depth' pixels -%% comprise a single floating-point value, with unspecified mantissa and exponent sizes, -%% scaled such that 0.0 represents the minimum depth buffer value, and 1.0 represents the -%% maximum depth buffer value. Finally, `stencil' pixels comprise a single fixed-point -%% value, with unspecified precision to the right of the binary point. -%% -%% The pixel transfer operations performed on the four basic pixel types are as follows: -%% -%% `Color': Each of the four color components is multiplied by a scale factor, then -%% added to a bias factor. That is, the red component is multiplied by `?GL_RED_SCALE', -%% then added to `?GL_RED_BIAS'; the green component is multiplied by `?GL_GREEN_SCALE' -%% , then added to `?GL_GREEN_BIAS'; the blue component is multiplied by `?GL_BLUE_SCALE' -%% , then added to `?GL_BLUE_BIAS'; and the alpha component is multiplied by `?GL_ALPHA_SCALE' -%% , then added to `?GL_ALPHA_BIAS'. After all four color components are scaled and -%% biased, each is clamped to the range [0 1]. All color, scale, and bias values are specified -%% with ``gl:pixelTransfer''. -%% -%% If `?GL_MAP_COLOR' is true, each color component is scaled by the size of the corresponding -%% color-to-color map, then replaced by the contents of that map indexed by the scaled component. -%% That is, the red component is scaled by `?GL_PIXEL_MAP_R_TO_R_SIZE', then replaced -%% by the contents of `?GL_PIXEL_MAP_R_TO_R' indexed by itself. The green component -%% is scaled by `?GL_PIXEL_MAP_G_TO_G_SIZE', then replaced by the contents of `?GL_PIXEL_MAP_G_TO_G' -%% indexed by itself. The blue component is scaled by `?GL_PIXEL_MAP_B_TO_B_SIZE', -%% then replaced by the contents of `?GL_PIXEL_MAP_B_TO_B' indexed by itself. And the -%% alpha component is scaled by `?GL_PIXEL_MAP_A_TO_A_SIZE', then replaced by the contents -%% of `?GL_PIXEL_MAP_A_TO_A' indexed by itself. All components taken from the maps are -%% then clamped to the range [0 1]. `?GL_MAP_COLOR' is specified with ``gl:pixelTransfer''. -%% The contents of the various maps are specified with {@link gl:pixelMapfv/3} . -%% -%% If the ARB_imaging extension is supported, each of the four color components may be scaled -%% and biased after transformation by the color matrix. That is, the red component is multiplied -%% by `?GL_POST_COLOR_MATRIX_RED_SCALE', then added to `?GL_POST_COLOR_MATRIX_RED_BIAS' -%% ; the green component is multiplied by `?GL_POST_COLOR_MATRIX_GREEN_SCALE', then -%% added to `?GL_POST_COLOR_MATRIX_GREEN_BIAS'; the blue component is multiplied by `?GL_POST_COLOR_MATRIX_BLUE_SCALE' -%% , then added to `?GL_POST_COLOR_MATRIX_BLUE_BIAS'; and the alpha component is multiplied -%% by `?GL_POST_COLOR_MATRIX_ALPHA_SCALE', then added to `?GL_POST_COLOR_MATRIX_ALPHA_BIAS' -%% . After all four color components are scaled and biased, each is clamped to the range [0 -%% 1]. -%% -%% Similarly, if the ARB_imaging extension is supported, each of the four color components -%% may be scaled and biased after processing by the enabled convolution filter. That is, -%% the red component is multiplied by `?GL_POST_CONVOLUTION_RED_SCALE', then added to `?GL_POST_CONVOLUTION_RED_BIAS' -%% ; the green component is multiplied by `?GL_POST_CONVOLUTION_GREEN_SCALE', then added -%% to `?GL_POST_CONVOLUTION_GREEN_BIAS'; the blue component is multiplied by `?GL_POST_CONVOLUTION_BLUE_SCALE' -%% , then added to `?GL_POST_CONVOLUTION_BLUE_BIAS'; and the alpha component is multiplied -%% by `?GL_POST_CONVOLUTION_ALPHA_SCALE', then added to `?GL_POST_CONVOLUTION_ALPHA_BIAS' -%% . After all four color components are scaled and biased, each is clamped to the range [0 -%% 1]. -%% -%% `Color index': Each color index is shifted left by `?GL_INDEX_SHIFT' bits; -%% any bits beyond the number of fraction bits carried by the fixed-point index are filled -%% with zeros. If `?GL_INDEX_SHIFT' is negative, the shift is to the right, again zero -%% filled. Then `?GL_INDEX_OFFSET' is added to the index. `?GL_INDEX_SHIFT' and `?GL_INDEX_OFFSET' -%% are specified with ``gl:pixelTransfer''. -%% -%% From this point, operation diverges depending on the required format of the resulting -%% pixels. If the resulting pixels are to be written to a color index buffer, or if they -%% are being read back to client memory in `?GL_COLOR_INDEX' format, the pixels continue -%% to be treated as indices. If `?GL_MAP_COLOR' is true, each index is masked by 2 n-1 -%% , where n is `?GL_PIXEL_MAP_I_TO_I_SIZE', then replaced by the contents of `?GL_PIXEL_MAP_I_TO_I' -%% indexed by the masked value. `?GL_MAP_COLOR' is specified with ``gl:pixelTransfer'' -%% . The contents of the index map is specified with {@link gl:pixelMapfv/3} . -%% -%% If the resulting pixels are to be written to an RGBA color buffer, or if they are read -%% back to client memory in a format other than `?GL_COLOR_INDEX', the pixels are converted -%% from indices to colors by referencing the four maps `?GL_PIXEL_MAP_I_TO_R', `?GL_PIXEL_MAP_I_TO_G' -%% , `?GL_PIXEL_MAP_I_TO_B', and `?GL_PIXEL_MAP_I_TO_A'. Before being dereferenced, -%% the index is masked by 2 n-1, where n is `?GL_PIXEL_MAP_I_TO_R_SIZE' for the -%% red map, `?GL_PIXEL_MAP_I_TO_G_SIZE' for the green map, `?GL_PIXEL_MAP_I_TO_B_SIZE' -%% for the blue map, and `?GL_PIXEL_MAP_I_TO_A_SIZE' for the alpha map. All components -%% taken from the maps are then clamped to the range [0 1]. The contents of the four maps is -%% specified with {@link gl:pixelMapfv/3} . -%% -%% `Depth': Each depth value is multiplied by `?GL_DEPTH_SCALE', added to `?GL_DEPTH_BIAS' -%% , then clamped to the range [0 1]. -%% -%% `Stencil': Each index is shifted `?GL_INDEX_SHIFT' bits just as a color index -%% is, then added to `?GL_INDEX_OFFSET'. If `?GL_MAP_STENCIL' is true, each index -%% is masked by 2 n-1, where n is `?GL_PIXEL_MAP_S_TO_S_SIZE', then replaced by -%% the contents of `?GL_PIXEL_MAP_S_TO_S' indexed by the masked value. -%% -%% The following table gives the type, initial value, and range of valid values for each -%% of the pixel transfer parameters that are set with ``gl:pixelTransfer''. -%% -%% <table><tbody><tr><td> `Pname' </td><td>` Type '</td><td>` Initial Value '</td> -%% <td>` Valid Range '</td></tr></tbody><tbody><tr><td>`?GL_MAP_COLOR'</td><td> -%% boolean </td><td> false </td><td> true/false </td></tr><tr><td>`?GL_MAP_STENCIL'</td> -%% <td> boolean </td><td> false </td><td> true/false </td></tr><tr><td>`?GL_INDEX_SHIFT'</td> -%% <td> integer </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_INDEX_OFFSET'</td><td> integer -%% </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_RED_SCALE'</td><td> float </td><td> 1 </td> -%% <td>(-)</td></tr><tr><td>`?GL_GREEN_SCALE'</td><td> float </td><td> 1 </td><td>(-)</td></tr> -%% <tr><td>`?GL_BLUE_SCALE'</td><td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_ALPHA_SCALE' -%% </td><td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_DEPTH_SCALE'</td><td> -%% float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_RED_BIAS'</td><td> float </td><td> -%% 0 </td><td>(-)</td></tr><tr><td>`?GL_GREEN_BIAS'</td><td> float </td><td> 0 </td><td>(-)</td> -%% </tr><tr><td>`?GL_BLUE_BIAS'</td><td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_ALPHA_BIAS' -%% </td><td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_DEPTH_BIAS'</td><td> -%% float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_POST_COLOR_MATRIX_RED_SCALE'</td><td> -%% float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_POST_COLOR_MATRIX_GREEN_SCALE'</td> -%% <td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_POST_COLOR_MATRIX_BLUE_SCALE'</td> -%% <td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_POST_COLOR_MATRIX_ALPHA_SCALE'</td> -%% <td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_POST_COLOR_MATRIX_RED_BIAS'</td> -%% <td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_POST_COLOR_MATRIX_GREEN_BIAS'</td> -%% <td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_POST_COLOR_MATRIX_BLUE_BIAS'</td> -%% <td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_POST_COLOR_MATRIX_ALPHA_BIAS'</td> -%% <td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_POST_CONVOLUTION_RED_SCALE'</td> -%% <td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_POST_CONVOLUTION_GREEN_SCALE'</td> -%% <td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_POST_CONVOLUTION_BLUE_SCALE'</td> -%% <td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_POST_CONVOLUTION_ALPHA_SCALE'</td> -%% <td> float </td><td> 1 </td><td>(-)</td></tr><tr><td>`?GL_POST_CONVOLUTION_RED_BIAS'</td> -%% <td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_POST_CONVOLUTION_GREEN_BIAS'</td> -%% <td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_POST_CONVOLUTION_BLUE_BIAS'</td> -%% <td> float </td><td> 0 </td><td>(-)</td></tr><tr><td>`?GL_POST_CONVOLUTION_ALPHA_BIAS'</td> -%% <td> float </td><td> 0 </td><td>(-)</td></tr></tbody></table> -%% -%% ``gl:pixelTransferf'' can be used to set any pixel transfer parameter. If the parameter -%% type is boolean, 0 implies false and any other value implies true. If `Pname' is -%% an integer parameter, `Param' is rounded to the nearest integer. -%% -%% Likewise, ``gl:pixelTransferi'' can be used to set any of the pixel transfer parameters. -%% Boolean parameters are set to false if `Param' is 0 and to true otherwise. `Param' -%% is converted to floating point before being assigned to real-valued parameters. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPixelTransfer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPixelTransfer.xml">external</a> documentation. -spec pixelTransferf(Pname, Param) -> 'ok' when Pname :: enum(),Param :: float(). pixelTransferf(Pname,Param) -> cast(5225, <<Pname:?GLenum,Param:?GLfloat>>). @@ -5025,72 +2283,7 @@ pixelTransferi(Pname,Param) -> %% page, and partly in the reference pages for the pixel and texture image commands. Only %% the specification of the maps is described in this reference page. %% -%% `Map' is a symbolic map name, indicating one of ten maps to set. `Mapsize' specifies -%% the number of entries in the map, and `Values' is a pointer to an array of `Mapsize' -%% map values. -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a pixel transfer map is specified, `Values' is -%% treated as a byte offset into the buffer object's data store. -%% -%% The ten maps are as follows: -%% -%% `?GL_PIXEL_MAP_I_TO_I': Maps color indices to color indices. -%% -%% `?GL_PIXEL_MAP_S_TO_S': Maps stencil indices to stencil indices. -%% -%% `?GL_PIXEL_MAP_I_TO_R': Maps color indices to red components. -%% -%% `?GL_PIXEL_MAP_I_TO_G': Maps color indices to green components. -%% -%% `?GL_PIXEL_MAP_I_TO_B': Maps color indices to blue components. -%% -%% `?GL_PIXEL_MAP_I_TO_A': Maps color indices to alpha components. -%% -%% `?GL_PIXEL_MAP_R_TO_R': Maps red components to red components. -%% -%% `?GL_PIXEL_MAP_G_TO_G': Maps green components to green components. -%% -%% `?GL_PIXEL_MAP_B_TO_B': Maps blue components to blue components. -%% -%% `?GL_PIXEL_MAP_A_TO_A': Maps alpha components to alpha components. -%% -%% The entries in a map can be specified as single-precision floating-point numbers, unsigned -%% short integers, or unsigned int integers. Maps that store color component values (all -%% but `?GL_PIXEL_MAP_I_TO_I' and `?GL_PIXEL_MAP_S_TO_S') retain their values in -%% floating-point format, with unspecified mantissa and exponent sizes. Floating-point values -%% specified by ``gl:pixelMapfv'' are converted directly to the internal floating-point -%% format of these maps, then clamped to the range [0,1]. Unsigned integer values specified -%% by ``gl:pixelMapusv'' and ``gl:pixelMapuiv'' are converted linearly such that the -%% largest representable integer maps to 1.0, and 0 maps to 0.0. -%% -%% Maps that store indices, `?GL_PIXEL_MAP_I_TO_I' and `?GL_PIXEL_MAP_S_TO_S', -%% retain their values in fixed-point format, with an unspecified number of bits to the right -%% of the binary point. Floating-point values specified by ``gl:pixelMapfv'' are converted -%% directly to the internal fixed-point format of these maps. Unsigned integer values specified -%% by ``gl:pixelMapusv'' and ``gl:pixelMapuiv'' specify integer values, with all 0's -%% to the right of the binary point. -%% -%% The following table shows the initial sizes and values for each of the maps. Maps that -%% are indexed by either color or stencil indices must have `Mapsize' = 2 n for some -%% n or the results are undefined. The maximum allowable size for each map depends on the -%% implementation and can be determined by calling {@link gl:getBooleanv/1} with argument `?GL_MAX_PIXEL_MAP_TABLE' -%% . The single maximum applies to all maps; it is at least 32. <table><tbody><tr><td> `Map' -%% </td><td>` Lookup Index '</td><td>` Lookup Value '</td><td>` Initial Size '</td> -%% <td>` Initial Value '</td></tr></tbody><tbody><tr><td>`?GL_PIXEL_MAP_I_TO_I'</td> -%% <td> color index </td><td> color index </td><td> 1 </td><td> 0 </td></tr><tr><td>`?GL_PIXEL_MAP_S_TO_S' -%% </td><td> stencil index </td><td> stencil index </td><td> 1 </td><td> 0 </td></tr><tr><td> -%% `?GL_PIXEL_MAP_I_TO_R'</td><td> color index </td><td> R </td><td> 1 </td><td> 0 </td> -%% </tr><tr><td>`?GL_PIXEL_MAP_I_TO_G'</td><td> color index </td><td> G </td><td> 1 </td> -%% <td> 0 </td></tr><tr><td>`?GL_PIXEL_MAP_I_TO_B'</td><td> color index </td><td> B </td> -%% <td> 1 </td><td> 0 </td></tr><tr><td>`?GL_PIXEL_MAP_I_TO_A'</td><td> color index </td> -%% <td> A </td><td> 1 </td><td> 0 </td></tr><tr><td>`?GL_PIXEL_MAP_R_TO_R'</td><td> R </td> -%% <td> R </td><td> 1 </td><td> 0 </td></tr><tr><td>`?GL_PIXEL_MAP_G_TO_G'</td><td> G </td> -%% <td> G </td><td> 1 </td><td> 0 </td></tr><tr><td>`?GL_PIXEL_MAP_B_TO_B'</td><td> B </td> -%% <td> B </td><td> 1 </td><td> 0 </td></tr><tr><td>`?GL_PIXEL_MAP_A_TO_A'</td><td> A </td> -%% <td> A </td><td> 1 </td><td> 0 </td></tr></tbody></table> -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPixelMap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPixelMap.xml">external</a> documentation. -spec pixelMapfv(Map, Mapsize, Values) -> 'ok' when Map :: enum(),Mapsize :: integer(),Values :: binary(). pixelMapfv(Map,Mapsize,Values) -> send_bin(Values), @@ -5121,19 +2314,7 @@ pixelMapusv(Map,Mapsize,Values) -> %% , and {@link gl:copyTexSubImage3D/9} . to map color indices, stencil indices, color components, %% and depth components to other values. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a pixel map is requested, `Data' is treated as -%% a byte offset into the buffer object's data store. -%% -%% Unsigned integer values, if requested, are linearly mapped from the internal fixed or -%% floating-point representation such that 1.0 maps to the largest representable integer -%% value, and 0.0 maps to 0. Return unsigned integer values are undefined if the map value -%% was not in the range [0,1]. -%% -%% To determine the required size of `Map' , call {@link gl:getBooleanv/1} with the appropriate -%% symbolic constant. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetPixelMap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetPixelMap.xml">external</a> documentation. -spec getPixelMapfv(Map, Values) -> 'ok' when Map :: enum(),Values :: mem(). getPixelMapfv(Map,Values) -> send_bin(Values), @@ -5160,42 +2341,7 @@ getPixelMapusv(Map,Values) -> %% using the current raster color or index. Frame buffer pixels corresponding to 0's in the %% bitmap are not modified. %% -%% ``gl:bitmap'' takes seven arguments. The first pair specifies the width and height of -%% the bitmap image. The second pair specifies the location of the bitmap origin relative -%% to the lower left corner of the bitmap image. The third pair of arguments specifies `x' -%% and `y' offsets to be added to the current raster position after the bitmap has -%% been drawn. The final argument is a pointer to the bitmap image itself. -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a bitmap image is specified, `Bitmap' is treated -%% as a byte offset into the buffer object's data store. -%% -%% The bitmap image is interpreted like image data for the {@link gl:drawPixels/5} command, -%% with `Width' and `Height' corresponding to the width and height arguments of -%% that command, and with `type' set to `?GL_BITMAP' and `format' set to `?GL_COLOR_INDEX' -%% . Modes specified using {@link gl:pixelStoref/2} affect the interpretation of bitmap image -%% data; modes specified using {@link gl:pixelTransferf/2} do not. -%% -%% If the current raster position is invalid, ``gl:bitmap'' is ignored. Otherwise, the -%% lower left corner of the bitmap image is positioned at the window coordinates -%% -%% x w=|x r-x o| -%% -%% y w=|y r-y o| -%% -%% where (x r y r) is the raster position and (x o y o) is the bitmap origin. Fragments are then generated -%% for each pixel corresponding to a 1 (one) in the bitmap image. These fragments are generated -%% using the current raster `z' coordinate, color or color index, and current raster -%% texture coordinates. They are then treated just as if they had been generated by a point, -%% line, or polygon, including texture mapping, fogging, and all per-fragment operations -%% such as alpha and depth testing. -%% -%% After the bitmap has been drawn, the `x' and `y' coordinates of the current -%% raster position are offset by `Xmove' and `Ymove' . No change is made to the `z' -%% coordinate of the current raster position, or to the current raster color, texture coordinates, -%% or index. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBitmap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBitmap.xml">external</a> documentation. -spec bitmap(Width, Height, Xorig, Yorig, Xmove, Ymove, Bitmap) -> 'ok' when Width :: integer(),Height :: integer(),Xorig :: float(),Yorig :: float(),Xmove :: float(),Ymove :: float(),Bitmap :: offset()|mem(). bitmap(Width,Height,Xorig,Yorig,Xmove,Ymove,Bitmap) when is_integer(Bitmap) -> cast(5233, <<Width:?GLsizei,Height:?GLsizei,Xorig:?GLfloat,Yorig:?GLfloat,Xmove:?GLfloat,Ymove:?GLfloat,Bitmap:?GLuint>>); @@ -5212,91 +2358,7 @@ bitmap(Width,Height,Xorig,Yorig,Xmove,Ymove,Bitmap) -> %% This reference page describes the effects on ``gl:readPixels'' of most, but not all %% of the parameters specified by these three commands. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a block of pixels is requested, `Data' is treated -%% as a byte offset into the buffer object's data store rather than a pointer to client memory. -%% -%% -%% ``gl:readPixels'' returns values from each pixel with lower left corner at (x+i y+j) for 0<= -%% i< width and 0<= j< height. This pixel is said to be the ith pixel in the -%% jth row. Pixels are returned in row order from the lowest to the highest row, left to -%% right in each row. -%% -%% `Format' specifies the format for the returned pixel values; accepted values are: -%% -%% `?GL_STENCIL_INDEX': Stencil values are read from the stencil buffer. Each index -%% is converted to fixed point, shifted left or right depending on the value and sign of `?GL_INDEX_SHIFT' -%% , and added to `?GL_INDEX_OFFSET'. If `?GL_MAP_STENCIL' is `?GL_TRUE', -%% indices are replaced by their mappings in the table `?GL_PIXEL_MAP_S_TO_S'. -%% -%% `?GL_DEPTH_COMPONENT': Depth values are read from the depth buffer. Each component -%% is converted to floating point such that the minimum depth value maps to 0 and the maximum -%% value maps to 1. Each component is then multiplied by `?GL_DEPTH_SCALE', added to `?GL_DEPTH_BIAS' -%% , and finally clamped to the range [0 1]. -%% -%% `?GL_DEPTH_STENCIL': Values are taken from both the depth and stencil buffers. The `Type' -%% parameter must be `?GL_UNSIGNED_INT_24_8' or `?GL_FLOAT_32_UNSIGNED_INT_24_8_REV' -%% . -%% -%% `?GL_RED' -%% -%% `?GL_GREEN' -%% -%% `?GL_BLUE' -%% -%% `?GL_RGB' -%% -%% `?GL_BGR' -%% -%% `?GL_RGBA' -%% -%% `?GL_BGRA': Finally, the indices or components are converted to the proper format, -%% as specified by `Type' . If `Format' is `?GL_STENCIL_INDEX' and `Type' -%% is not `?GL_FLOAT', each index is masked with the mask value given in the following -%% table. If `Type' is `?GL_FLOAT', then each integer index is converted to single-precision -%% floating-point format. -%% -%% If `Format' is `?GL_RED', `?GL_GREEN', `?GL_BLUE', `?GL_RGB', `?GL_BGR' -%% , `?GL_RGBA', or `?GL_BGRA' and `Type' is not `?GL_FLOAT', each component -%% is multiplied by the multiplier shown in the following table. If type is `?GL_FLOAT', -%% then each component is passed as is (or converted to the client's single-precision floating-point -%% format if it is different from the one used by the GL). -%% -%% <table><tbody><tr><td> `Type' </td><td>` Index Mask '</td><td>` Component Conversion ' -%% </td></tr></tbody><tbody><tr><td>`?GL_UNSIGNED_BYTE'</td><td> 2 8-1</td><td>(2 8-1) c</td></tr> -%% <tr><td>`?GL_BYTE'</td><td> 2 7-1</td><td>((2 8-1) c-1)/2</td></tr><tr><td>`?GL_UNSIGNED_SHORT' -%% </td><td> 2 16-1</td><td>(2 16-1) c</td></tr><tr><td>`?GL_SHORT'</td><td> 2 15-1</td><td>((2 -%% 16-1) -%% c-1)/2</td> -%% </tr><tr><td>`?GL_UNSIGNED_INT'</td><td> 2 32-1</td><td>(2 32-1) c</td></tr><tr><td>`?GL_INT' -%% </td><td> 2 31-1</td><td>((2 32-1) c-1)/2</td></tr><tr><td>`?GL_HALF_FLOAT'</td><td> none </td><td> -%% c</td></tr><tr><td>`?GL_FLOAT'</td><td> none </td><td> c</td></tr><tr><td>`?GL_UNSIGNED_BYTE_3_3_2' -%% </td><td> 2 N-1</td><td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_BYTE_2_3_3_REV'</td><td> -%% 2 N-1</td><td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_SHORT_5_6_5'</td><td> 2 N-1</td><td> -%% (2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_SHORT_5_6_5_REV'</td><td> 2 N-1</td><td>(2 N-1) c</td></tr> -%% <tr><td>`?GL_UNSIGNED_SHORT_4_4_4_4'</td><td> 2 N-1</td><td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_SHORT_4_4_4_4_REV' -%% </td><td> 2 N-1</td><td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_SHORT_5_5_5_1'</td><td> 2 -%% N-1</td><td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_SHORT_1_5_5_5_REV'</td><td> 2 N-1</td> -%% <td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_INT_8_8_8_8'</td><td> 2 N-1</td><td>(2 N-1) c</td></tr> -%% <tr><td>`?GL_UNSIGNED_INT_8_8_8_8_REV'</td><td> 2 N-1</td><td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_INT_10_10_10_2' -%% </td><td> 2 N-1</td><td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_INT_2_10_10_10_REV'</td><td> -%% 2 N-1</td><td>(2 N-1) c</td></tr><tr><td>`?GL_UNSIGNED_INT_24_8'</td><td> 2 N-1</td><td>(2 -%% N-1) -%% c</td></tr><tr><td>`?GL_UNSIGNED_INT_10F_11F_11F_REV'</td><td> -- </td><td> Special </td> -%% </tr><tr><td>`?GL_UNSIGNED_INT_5_9_9_9_REV'</td><td> -- </td><td> Special </td></tr><tr> -%% <td>`?GL_FLOAT_32_UNSIGNED_INT_24_8_REV'</td><td> none </td><td> c (Depth Only) </td> -%% </tr></tbody></table> -%% -%% Return values are placed in memory as follows. If `Format' is `?GL_STENCIL_INDEX' -%% , `?GL_DEPTH_COMPONENT', `?GL_RED', `?GL_GREEN', or `?GL_BLUE', a -%% single value is returned and the data for the ith pixel in the jth row is placed in -%% location (j) width+i. `?GL_RGB' and `?GL_BGR' return three values, `?GL_RGBA' -%% and `?GL_BGRA' return four values for each pixel, with all values corresponding -%% to a single pixel occupying contiguous space in `Data' . Storage parameters set by {@link gl:pixelStoref/2} -%% , such as `?GL_PACK_LSB_FIRST' and `?GL_PACK_SWAP_BYTES', affect the way that -%% data is written into memory. See {@link gl:pixelStoref/2} for a description. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glReadPixels.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glReadPixels.xhtml">external</a> documentation. -spec readPixels(X, Y, Width, Height, Format, Type, Pixels) -> 'ok' when X :: integer(),Y :: integer(),Width :: integer(),Height :: integer(),Format :: enum(),Type :: enum(),Pixels :: mem(). readPixels(X,Y,Width,Height,Format,Type,Pixels) -> send_bin(Pixels), @@ -5311,237 +2373,7 @@ readPixels(X,Y,Width,Height,Format,Type,Pixels) -> %% position is valid, and {@link gl:getBooleanv/1} with argument `?GL_CURRENT_RASTER_POSITION' %% to query the raster position. %% -%% Several parameters define the encoding of pixel data in memory and control the processing -%% of the pixel data before it is placed in the frame buffer. These parameters are set with -%% four commands: {@link gl:pixelStoref/2} , {@link gl:pixelTransferf/2} , {@link gl:pixelMapfv/3} , -%% and {@link gl:pixelZoom/2} . This reference page describes the effects on ``gl:drawPixels'' -%% of many, but not all, of the parameters specified by these four commands. -%% -%% Data is read from `Data' as a sequence of signed or unsigned bytes, signed or unsigned -%% shorts, signed or unsigned integers, or single-precision floating-point values, depending -%% on `Type' . When `Type' is one of `?GL_UNSIGNED_BYTE', `?GL_BYTE', `?GL_UNSIGNED_SHORT' -%% , `?GL_SHORT', `?GL_UNSIGNED_INT', `?GL_INT', or `?GL_FLOAT' each -%% of these bytes, shorts, integers, or floating-point values is interpreted as one color -%% or depth component, or one index, depending on `Format' . When `Type' is one of `?GL_UNSIGNED_BYTE_3_3_2' -%% , `?GL_UNSIGNED_SHORT_5_6_5', `?GL_UNSIGNED_SHORT_4_4_4_4', `?GL_UNSIGNED_SHORT_5_5_5_1' -%% , `?GL_UNSIGNED_INT_8_8_8_8', or `?GL_UNSIGNED_INT_10_10_10_2', each unsigned -%% value is interpreted as containing all the components for a single pixel, with the color -%% components arranged according to `Format' . When `Type' is one of `?GL_UNSIGNED_BYTE_2_3_3_REV' -%% , `?GL_UNSIGNED_SHORT_5_6_5_REV', `?GL_UNSIGNED_SHORT_4_4_4_4_REV', `?GL_UNSIGNED_SHORT_1_5_5_5_REV' -%% , `?GL_UNSIGNED_INT_8_8_8_8_REV', or `?GL_UNSIGNED_INT_2_10_10_10_REV', each -%% unsigned value is interpreted as containing all color components, specified by `Format' -%% , for a single pixel in a reversed order. Indices are always treated individually. Color -%% components are treated as groups of one, two, three, or four values, again based on `Format' -%% . Both individual indices and groups of components are referred to as pixels. If `Type' -%% is `?GL_BITMAP', the data must be unsigned bytes, and `Format' must be either `?GL_COLOR_INDEX' -%% or `?GL_STENCIL_INDEX'. Each unsigned byte is treated as eight 1-bit pixels, with -%% bit ordering determined by `?GL_UNPACK_LSB_FIRST' (see {@link gl:pixelStoref/2} ). -%% -%% width×height pixels are read from memory, starting at location `Data' . By default, -%% these pixels are taken from adjacent memory locations, except that after all `Width' -%% pixels are read, the read pointer is advanced to the next four-byte boundary. The four-byte -%% row alignment is specified by {@link gl:pixelStoref/2} with argument `?GL_UNPACK_ALIGNMENT' -%% , and it can be set to one, two, four, or eight bytes. Other pixel store parameters specify -%% different read pointer advancements, both before the first pixel is read and after all `Width' -%% pixels are read. See the {@link gl:pixelStoref/2} reference page for details on these options. -%% -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a block of pixels is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% The width×height pixels that are read from memory are each operated on in the same -%% way, based on the values of several parameters specified by {@link gl:pixelTransferf/2} -%% and {@link gl:pixelMapfv/3} . The details of these operations, as well as the target buffer -%% into which the pixels are drawn, are specific to the format of the pixels, as specified -%% by `Format' . `Format' can assume one of 13 symbolic values: -%% -%% `?GL_COLOR_INDEX': Each pixel is a single value, a color index. It is converted -%% to fixed-point format, with an unspecified number of bits to the right of the binary point, -%% regardless of the memory data type. Floating-point values convert to true fixed-point -%% values. Signed and unsigned integer data is converted with all fraction bits set to 0. -%% Bitmap data convert to either 0 or 1. -%% -%% Each fixed-point index is then shifted left by `?GL_INDEX_SHIFT' bits and added to `?GL_INDEX_OFFSET' -%% . If `?GL_INDEX_SHIFT' is negative, the shift is to the right. In either case, zero -%% bits fill otherwise unspecified bit locations in the result. -%% -%% If the GL is in RGBA mode, the resulting index is converted to an RGBA pixel with the -%% help of the `?GL_PIXEL_MAP_I_TO_R', `?GL_PIXEL_MAP_I_TO_G', `?GL_PIXEL_MAP_I_TO_B' -%% , and `?GL_PIXEL_MAP_I_TO_A' tables. If the GL is in color index mode, and if `?GL_MAP_COLOR' -%% is true, the index is replaced with the value that it references in lookup table `?GL_PIXEL_MAP_I_TO_I' -%% . Whether the lookup replacement of the index is done or not, the integer part of the -%% index is then ANDed with 2 b-1, where b is the number of bits in a color index buffer. -%% -%% -%% The GL then converts the resulting indices or RGBA colors to fragments by attaching the -%% current raster position `z' coordinate and texture coordinates to each pixel, then -%% assigning x and y window coordinates to the nth fragment such that x n=x r+n% width -%% -%% -%% y n=y r+|n/width| -%% -%% where (x r y r) is the current raster position. These pixel fragments are then treated just like -%% the fragments generated by rasterizing points, lines, or polygons. Texture mapping, fog, -%% and all the fragment operations are applied before the fragments are written to the frame -%% buffer. -%% -%% `?GL_STENCIL_INDEX': Each pixel is a single value, a stencil index. It is converted -%% to fixed-point format, with an unspecified number of bits to the right of the binary point, -%% regardless of the memory data type. Floating-point values convert to true fixed-point -%% values. Signed and unsigned integer data is converted with all fraction bits set to 0. -%% Bitmap data convert to either 0 or 1. -%% -%% Each fixed-point index is then shifted left by `?GL_INDEX_SHIFT' bits, and added -%% to `?GL_INDEX_OFFSET'. If `?GL_INDEX_SHIFT' is negative, the shift is to the -%% right. In either case, zero bits fill otherwise unspecified bit locations in the result. -%% If `?GL_MAP_STENCIL' is true, the index is replaced with the value that it references -%% in lookup table `?GL_PIXEL_MAP_S_TO_S'. Whether the lookup replacement of the index -%% is done or not, the integer part of the index is then ANDed with 2 b-1, where b is -%% the number of bits in the stencil buffer. The resulting stencil indices are then written -%% to the stencil buffer such that the nth index is written to location -%% -%% x n=x r+n% width -%% -%% y n=y r+|n/width| -%% -%% where (x r y r) is the current raster position. Only the pixel ownership test, the scissor test, -%% and the stencil writemask affect these write operations. -%% -%% `?GL_DEPTH_COMPONENT': Each pixel is a single-depth component. Floating-point data -%% is converted directly to an internal floating-point format with unspecified precision. -%% Signed integer data is mapped linearly to the internal floating-point format such that -%% the most positive representable integer value maps to 1.0, and the most negative representable -%% value maps to -1.0. Unsigned integer data is mapped similarly: the largest integer value -%% maps to 1.0, and 0 maps to 0.0. The resulting floating-point depth value is then multiplied -%% by `?GL_DEPTH_SCALE' and added to `?GL_DEPTH_BIAS'. The result is clamped to -%% the range [0 1]. -%% -%% The GL then converts the resulting depth components to fragments by attaching the current -%% raster position color or color index and texture coordinates to each pixel, then assigning -%% x and y window coordinates to the nth fragment such that -%% -%% x n=x r+n% width -%% -%% y n=y r+|n/width| -%% -%% where (x r y r) is the current raster position. These pixel fragments are then treated just like -%% the fragments generated by rasterizing points, lines, or polygons. Texture mapping, fog, -%% and all the fragment operations are applied before the fragments are written to the frame -%% buffer. -%% -%% `?GL_RGBA' -%% -%% `?GL_BGRA': Each pixel is a four-component group: For `?GL_RGBA', the red component -%% is first, followed by green, followed by blue, followed by alpha; for `?GL_BGRA' -%% the order is blue, green, red and then alpha. Floating-point values are converted directly -%% to an internal floating-point format with unspecified precision. Signed integer values -%% are mapped linearly to the internal floating-point format such that the most positive -%% representable integer value maps to 1.0, and the most negative representable value maps -%% to -1.0. (Note that this mapping does not convert 0 precisely to 0.0.) Unsigned integer -%% data is mapped similarly: The largest integer value maps to 1.0, and 0 maps to 0.0. The -%% resulting floating-point color values are then multiplied by `?GL_c_SCALE' and added -%% to `?GL_c_BIAS', where `c' is RED, GREEN, BLUE, and ALPHA for the respective -%% color components. The results are clamped to the range [0 1]. -%% -%% If `?GL_MAP_COLOR' is true, each color component is scaled by the size of lookup -%% table `?GL_PIXEL_MAP_c_TO_c', then replaced by the value that it references in that -%% table. `c' is R, G, B, or A respectively. -%% -%% The GL then converts the resulting RGBA colors to fragments by attaching the current -%% raster position `z' coordinate and texture coordinates to each pixel, then assigning -%% x and y window coordinates to the nth fragment such that -%% -%% x n=x r+n% width -%% -%% y n=y r+|n/width| -%% -%% where (x r y r) is the current raster position. These pixel fragments are then treated just like -%% the fragments generated by rasterizing points, lines, or polygons. Texture mapping, fog, -%% and all the fragment operations are applied before the fragments are written to the frame -%% buffer. -%% -%% `?GL_RED': Each pixel is a single red component. This component is converted to -%% the internal floating-point format in the same way the red component of an RGBA pixel -%% is. It is then converted to an RGBA pixel with green and blue set to 0, and alpha set -%% to 1. After this conversion, the pixel is treated as if it had been read as an RGBA pixel. -%% -%% -%% `?GL_GREEN': Each pixel is a single green component. This component is converted -%% to the internal floating-point format in the same way the green component of an RGBA pixel -%% is. It is then converted to an RGBA pixel with red and blue set to 0, and alpha set to -%% 1. After this conversion, the pixel is treated as if it had been read as an RGBA pixel. -%% -%% `?GL_BLUE': Each pixel is a single blue component. This component is converted to -%% the internal floating-point format in the same way the blue component of an RGBA pixel -%% is. It is then converted to an RGBA pixel with red and green set to 0, and alpha set to -%% 1. After this conversion, the pixel is treated as if it had been read as an RGBA pixel. -%% -%% `?GL_ALPHA': Each pixel is a single alpha component. This component is converted -%% to the internal floating-point format in the same way the alpha component of an RGBA pixel -%% is. It is then converted to an RGBA pixel with red, green, and blue set to 0. After this -%% conversion, the pixel is treated as if it had been read as an RGBA pixel. -%% -%% `?GL_RGB' -%% -%% `?GL_BGR': Each pixel is a three-component group: red first, followed by green, -%% followed by blue; for `?GL_BGR', the first component is blue, followed by green and -%% then red. Each component is converted to the internal floating-point format in the same -%% way the red, green, and blue components of an RGBA pixel are. The color triple is converted -%% to an RGBA pixel with alpha set to 1. After this conversion, the pixel is treated as if -%% it had been read as an RGBA pixel. -%% -%% `?GL_LUMINANCE': Each pixel is a single luminance component. This component is converted -%% to the internal floating-point format in the same way the red component of an RGBA pixel -%% is. It is then converted to an RGBA pixel with red, green, and blue set to the converted -%% luminance value, and alpha set to 1. After this conversion, the pixel is treated as if -%% it had been read as an RGBA pixel. -%% -%% `?GL_LUMINANCE_ALPHA': Each pixel is a two-component group: luminance first, followed -%% by alpha. The two components are converted to the internal floating-point format in the -%% same way the red component of an RGBA pixel is. They are then converted to an RGBA pixel -%% with red, green, and blue set to the converted luminance value, and alpha set to the converted -%% alpha value. After this conversion, the pixel is treated as if it had been read as an -%% RGBA pixel. -%% -%% The following table summarizes the meaning of the valid constants for the `type' -%% parameter: -%% -%% <table><tbody><tr><td>` Type '</td><td>` Corresponding Type '</td></tr></tbody><tbody> -%% <tr><td>`?GL_UNSIGNED_BYTE'</td><td> unsigned 8-bit integer </td></tr><tr><td>`?GL_BYTE' -%% </td><td> signed 8-bit integer </td></tr><tr><td>`?GL_BITMAP'</td><td> single bits -%% in unsigned 8-bit integers </td></tr><tr><td>`?GL_UNSIGNED_SHORT'</td><td> unsigned -%% 16-bit integer </td></tr><tr><td>`?GL_SHORT'</td><td> signed 16-bit integer </td></tr> -%% <tr><td>`?GL_UNSIGNED_INT'</td><td> unsigned 32-bit integer </td></tr><tr><td>`?GL_INT' -%% </td><td> 32-bit integer </td></tr><tr><td>`?GL_FLOAT'</td><td> single-precision -%% floating-point </td></tr><tr><td>`?GL_UNSIGNED_BYTE_3_3_2'</td><td> unsigned 8-bit -%% integer </td></tr><tr><td>`?GL_UNSIGNED_BYTE_2_3_3_REV'</td><td> unsigned 8-bit -%% integer with reversed component ordering </td></tr><tr><td>`?GL_UNSIGNED_SHORT_5_6_5'</td> -%% <td> unsigned 16-bit integer </td></tr><tr><td>`?GL_UNSIGNED_SHORT_5_6_5_REV'</td><td> -%% unsigned 16-bit integer with reversed component ordering </td></tr><tr><td>`?GL_UNSIGNED_SHORT_4_4_4_4' -%% </td><td> unsigned 16-bit integer </td></tr><tr><td>`?GL_UNSIGNED_SHORT_4_4_4_4_REV'</td> -%% <td> unsigned 16-bit integer with reversed component ordering </td></tr><tr><td>`?GL_UNSIGNED_SHORT_5_5_5_1' -%% </td><td> unsigned 16-bit integer </td></tr><tr><td>`?GL_UNSIGNED_SHORT_1_5_5_5_REV'</td> -%% <td> unsigned 16-bit integer with reversed component ordering </td></tr><tr><td>`?GL_UNSIGNED_INT_8_8_8_8' -%% </td><td> unsigned 32-bit integer </td></tr><tr><td>`?GL_UNSIGNED_INT_8_8_8_8_REV'</td> -%% <td> unsigned 32-bit integer with reversed component ordering </td></tr><tr><td>`?GL_UNSIGNED_INT_10_10_10_2' -%% </td><td> unsigned 32-bit integer </td></tr><tr><td>`?GL_UNSIGNED_INT_2_10_10_10_REV'</td> -%% <td> unsigned 32-bit integer with reversed component ordering </td></tr></tbody></table> -%% -%% The rasterization described so far assumes pixel zoom factors of 1. If {@link gl:pixelZoom/2} -%% is used to change the x and y pixel zoom factors, pixels are converted to fragments -%% as follows. If (x r y r) is the current raster position, and a given pixel is in the nth column -%% and mth row of the pixel rectangle, then fragments are generated for pixels whose centers -%% are in the rectangle with corners at -%% -%% (x r+(zoom x) n y r+(zoom y) m) -%% -%% (x r+(zoom x)(n+1) y r+(zoom y)(m+1)) -%% -%% where zoom x is the value of `?GL_ZOOM_X' and zoom y is the value of `?GL_ZOOM_Y' -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawPixels.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glDrawPixels.xml">external</a> documentation. -spec drawPixels(Width, Height, Format, Type, Pixels) -> 'ok' when Width :: integer(),Height :: integer(),Format :: enum(),Type :: enum(),Pixels :: offset()|mem(). drawPixels(Width,Height,Format,Type,Pixels) when is_integer(Pixels) -> cast(5236, <<Width:?GLsizei,Height:?GLsizei,Format:?GLenum,Type:?GLenum,Pixels:?GLuint>>); @@ -5557,98 +2389,7 @@ drawPixels(Width,Height,Format,Type,Pixels) -> %% window. Results of copies from outside the window, or from regions of the window that %% are not exposed, are hardware dependent and undefined. %% -%% `X' and `Y' specify the window coordinates of the lower left corner of the rectangular -%% region to be copied. `Width' and `Height' specify the dimensions of the rectangular -%% region to be copied. Both `Width' and `Height' must not be negative. -%% -%% Several parameters control the processing of the pixel data while it is being copied. -%% These parameters are set with three commands: {@link gl:pixelTransferf/2} , {@link gl:pixelMapfv/3} -%% , and {@link gl:pixelZoom/2} . This reference page describes the effects on ``gl:copyPixels'' -%% of most, but not all, of the parameters specified by these three commands. -%% -%% ``gl:copyPixels'' copies values from each pixel with the lower left-hand corner at (x+i -%% y+j) -%% for 0<= i< width and 0<= j< height. This pixel is said to be the ith -%% pixel in the jth row. Pixels are copied in row order from the lowest to the highest -%% row, left to right in each row. -%% -%% `Type' specifies whether color, depth, or stencil data is to be copied. The details -%% of the transfer for each data type are as follows: -%% -%% `?GL_COLOR': Indices or RGBA colors are read from the buffer currently specified -%% as the read source buffer (see {@link gl:readBuffer/1} ). If the GL is in color index mode, -%% each index that is read from this buffer is converted to a fixed-point format with an -%% unspecified number of bits to the right of the binary point. Each index is then shifted -%% left by `?GL_INDEX_SHIFT' bits, and added to `?GL_INDEX_OFFSET'. If `?GL_INDEX_SHIFT' -%% is negative, the shift is to the right. In either case, zero bits fill otherwise unspecified -%% bit locations in the result. If `?GL_MAP_COLOR' is true, the index is replaced with -%% the value that it references in lookup table `?GL_PIXEL_MAP_I_TO_I'. Whether the -%% lookup replacement of the index is done or not, the integer part of the index is then -%% ANDed with 2 b-1, where b is the number of bits in a color index buffer. -%% -%% If the GL is in RGBA mode, the red, green, blue, and alpha components of each pixel that -%% is read are converted to an internal floating-point format with unspecified precision. -%% The conversion maps the largest representable component value to 1.0, and component value -%% 0 to 0.0. The resulting floating-point color values are then multiplied by `?GL_c_SCALE' -%% and added to `?GL_c_BIAS', where `c' is RED, GREEN, BLUE, and ALPHA for the -%% respective color components. The results are clamped to the range [0,1]. If `?GL_MAP_COLOR' -%% is true, each color component is scaled by the size of lookup table `?GL_PIXEL_MAP_c_TO_c' -%% , then replaced by the value that it references in that table. `c' is R, G, B, or -%% A. -%% -%% If the ARB_imaging extension is supported, the color values may be additionally processed -%% by color-table lookups, color-matrix transformations, and convolution filters. -%% -%% The GL then converts the resulting indices or RGBA colors to fragments by attaching the -%% current raster position `z' coordinate and texture coordinates to each pixel, then -%% assigning window coordinates (x r+i y r+j), where (x r y r) is the current raster position, and the pixel was -%% the ith pixel in the jth row. These pixel fragments are then treated just like the -%% fragments generated by rasterizing points, lines, or polygons. Texture mapping, fog, and -%% all the fragment operations are applied before the fragments are written to the frame -%% buffer. -%% -%% `?GL_DEPTH': Depth values are read from the depth buffer and converted directly -%% to an internal floating-point format with unspecified precision. The resulting floating-point -%% depth value is then multiplied by `?GL_DEPTH_SCALE' and added to `?GL_DEPTH_BIAS' -%% . The result is clamped to the range [0,1]. -%% -%% The GL then converts the resulting depth components to fragments by attaching the current -%% raster position color or color index and texture coordinates to each pixel, then assigning -%% window coordinates (x r+i y r+j), where (x r y r) is the current raster position, and the pixel was the ith -%% pixel in the jth row. These pixel fragments are then treated just like the fragments -%% generated by rasterizing points, lines, or polygons. Texture mapping, fog, and all the -%% fragment operations are applied before the fragments are written to the frame buffer. -%% -%% `?GL_STENCIL': Stencil indices are read from the stencil buffer and converted to -%% an internal fixed-point format with an unspecified number of bits to the right of the -%% binary point. Each fixed-point index is then shifted left by `?GL_INDEX_SHIFT' bits, -%% and added to `?GL_INDEX_OFFSET'. If `?GL_INDEX_SHIFT' is negative, the shift -%% is to the right. In either case, zero bits fill otherwise unspecified bit locations in -%% the result. If `?GL_MAP_STENCIL' is true, the index is replaced with the value that -%% it references in lookup table `?GL_PIXEL_MAP_S_TO_S'. Whether the lookup replacement -%% of the index is done or not, the integer part of the index is then ANDed with 2 b-1, -%% where b is the number of bits in the stencil buffer. The resulting stencil indices are -%% then written to the stencil buffer such that the index read from the ith location of -%% the jth row is written to location (x r+i y r+j), where (x r y r) is the current raster position. Only the -%% pixel ownership test, the scissor test, and the stencil writemask affect these write operations. -%% -%% -%% The rasterization described thus far assumes pixel zoom factors of 1.0. If {@link gl:pixelZoom/2} -%% is used to change the x and y pixel zoom factors, pixels are converted to fragments -%% as follows. If (x r y r) is the current raster position, and a given pixel is in the ith location -%% in the jth row of the source pixel rectangle, then fragments are generated for pixels -%% whose centers are in the rectangle with corners at -%% -%% (x r+(zoom x) i y r+(zoom y) j) -%% -%% and -%% -%% (x r+(zoom x)(i+1) y r+(zoom y)(j+1)) -%% -%% where zoom x is the value of `?GL_ZOOM_X' and zoom y is the value of `?GL_ZOOM_Y' -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyPixels.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCopyPixels.xml">external</a> documentation. -spec copyPixels(X, Y, Width, Height, Type) -> 'ok' when X :: integer(),Y :: integer(),Width :: integer(),Height :: integer(),Type :: enum(). copyPixels(X,Y,Width,Height,Type) -> cast(5238, <<X:?GLint,Y:?GLint,Width:?GLsizei,Height:?GLsizei,Type:?GLenum>>). @@ -5661,57 +2402,7 @@ copyPixels(X,Y,Width,Height,Type) -> %% typically used in multipass rendering algorithms to achieve special effects, such as decals, %% outlining, and constructive solid geometry rendering. %% -%% The stencil test conditionally eliminates a pixel based on the outcome of a comparison -%% between the reference value and the value in the stencil buffer. To enable and disable -%% the test, call {@link gl:enable/1} and {@link gl:enable/1} with argument `?GL_STENCIL_TEST' -%% . To specify actions based on the outcome of the stencil test, call {@link gl:stencilOp/3} -%% or {@link gl:stencilOpSeparate/4} . -%% -%% There can be two separate sets of `Func' , `Ref' , and `Mask' parameters; -%% one affects back-facing polygons, and the other affects front-facing polygons as well -%% as other non-polygon primitives. {@link gl:stencilFunc/3} sets both front and back stencil -%% state to the same values. Use {@link gl:stencilFuncSeparate/4} to set front and back stencil -%% state to different values. -%% -%% `Func' is a symbolic constant that determines the stencil comparison function. It -%% accepts one of eight values, shown in the following list. `Ref' is an integer reference -%% value that is used in the stencil comparison. It is clamped to the range [0 2 n-1], where n -%% is the number of bitplanes in the stencil buffer. `Mask' is bitwise ANDed with both -%% the reference value and the stored stencil value, with the ANDed values participating -%% in the comparison. -%% -%% If `stencil' represents the value stored in the corresponding stencil buffer location, -%% the following list shows the effect of each comparison function that can be specified by `Func' -%% . Only if the comparison succeeds is the pixel passed through to the next stage in the -%% rasterization process (see {@link gl:stencilOp/3} ). All tests treat `stencil' values -%% as unsigned integers in the range [0 2 n-1], where n is the number of bitplanes in the stencil -%% buffer. -%% -%% The following values are accepted by `Func' : -%% -%% `?GL_NEVER': Always fails. -%% -%% `?GL_LESS': Passes if ( `Ref' & `Mask' ) < ( `stencil' & `Mask' -%% ). -%% -%% `?GL_LEQUAL': Passes if ( `Ref' & `Mask' ) <= ( `stencil' -%% & `Mask' ). -%% -%% `?GL_GREATER': Passes if ( `Ref' & `Mask' ) > ( `stencil' -%% & `Mask' ). -%% -%% `?GL_GEQUAL': Passes if ( `Ref' & `Mask' ) >= ( `stencil' -%% & `Mask' ). -%% -%% `?GL_EQUAL': Passes if ( `Ref' & `Mask' ) = ( `stencil' & `Mask' -%% ). -%% -%% `?GL_NOTEQUAL': Passes if ( `Ref' & `Mask' ) != ( `stencil' & -%% `Mask' ). -%% -%% `?GL_ALWAYS': Always passes. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glStencilFunc.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glStencilFunc.xhtml">external</a> documentation. -spec stencilFunc(Func, Ref, Mask) -> 'ok' when Func :: enum(),Ref :: integer(),Mask :: integer(). stencilFunc(Func,Ref,Mask) -> cast(5239, <<Func:?GLenum,Ref:?GLint,Mask:?GLuint>>). @@ -5724,12 +2415,7 @@ stencilFunc(Func,Ref,Mask) -> %% bit in the stencil buffer. Where a 0 appears, the corresponding bit is write-protected. %% Initially, all bits are enabled for writing. %% -%% There can be two separate `Mask' writemasks; one affects back-facing polygons, and -%% the other affects front-facing polygons as well as other non-polygon primitives. {@link gl:stencilMask/1} -%% sets both front and back stencil writemasks to the same values. Use {@link gl:stencilMaskSeparate/2} -%% to set front and back stencil writemasks to different values. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glStencilMask.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glStencilMask.xhtml">external</a> documentation. -spec stencilMask(Mask) -> 'ok' when Mask :: integer(). stencilMask(Mask) -> cast(5240, <<Mask:?GLuint>>). @@ -5742,55 +2428,7 @@ stencilMask(Mask) -> %% used in multipass rendering algorithms to achieve special effects, such as decals, outlining, %% and constructive solid geometry rendering. %% -%% The stencil test conditionally eliminates a pixel based on the outcome of a comparison -%% between the value in the stencil buffer and a reference value. To enable and disable the -%% test, call {@link gl:enable/1} and {@link gl:enable/1} with argument `?GL_STENCIL_TEST' -%% ; to control it, call {@link gl:stencilFunc/3} or {@link gl:stencilFuncSeparate/4} . -%% -%% There can be two separate sets of `Sfail' , `Dpfail' , and `Dppass' parameters; -%% one affects back-facing polygons, and the other affects front-facing polygons as well -%% as other non-polygon primitives. {@link gl:stencilOp/3} sets both front and back stencil -%% state to the same values. Use {@link gl:stencilOpSeparate/4} to set front and back stencil -%% state to different values. -%% -%% ``gl:stencilOp'' takes three arguments that indicate what happens to the stored stencil -%% value while stenciling is enabled. If the stencil test fails, no change is made to the -%% pixel's color or depth buffers, and `Sfail' specifies what happens to the stencil -%% buffer contents. The following eight actions are possible. -%% -%% `?GL_KEEP': Keeps the current value. -%% -%% `?GL_ZERO': Sets the stencil buffer value to 0. -%% -%% `?GL_REPLACE': Sets the stencil buffer value to `ref', as specified by {@link gl:stencilFunc/3} -%% . -%% -%% `?GL_INCR': Increments the current stencil buffer value. Clamps to the maximum representable -%% unsigned value. -%% -%% `?GL_INCR_WRAP': Increments the current stencil buffer value. Wraps stencil buffer -%% value to zero when incrementing the maximum representable unsigned value. -%% -%% `?GL_DECR': Decrements the current stencil buffer value. Clamps to 0. -%% -%% `?GL_DECR_WRAP': Decrements the current stencil buffer value. Wraps stencil buffer -%% value to the maximum representable unsigned value when decrementing a stencil buffer value -%% of zero. -%% -%% `?GL_INVERT': Bitwise inverts the current stencil buffer value. -%% -%% Stencil buffer values are treated as unsigned integers. When incremented and decremented, -%% values are clamped to 0 and 2 n-1, where n is the value returned by querying `?GL_STENCIL_BITS' -%% . -%% -%% The other two arguments to ``gl:stencilOp'' specify stencil buffer actions that depend -%% on whether subsequent depth buffer tests succeed ( `Dppass' ) or fail ( `Dpfail' ) -%% (see {@link gl:depthFunc/1} ). The actions are specified using the same eight symbolic constants -%% as `Sfail' . Note that `Dpfail' is ignored when there is no depth buffer, or -%% when the depth buffer is not enabled. In these cases, `Sfail' and `Dppass' specify -%% stencil action when the stencil test fails and passes, respectively. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glStencilOp.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glStencilOp.xhtml">external</a> documentation. -spec stencilOp(Fail, Zfail, Zpass) -> 'ok' when Fail :: enum(),Zfail :: enum(),Zpass :: enum(). stencilOp(Fail,Zfail,Zpass) -> cast(5241, <<Fail:?GLenum,Zfail:?GLenum,Zpass:?GLenum>>). @@ -5801,7 +2439,7 @@ stencilOp(Fail,Zfail,Zpass) -> %% buffer. `S' is masked with 2 m-1, where m is the number of bits in the stencil %% buffer. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClearStencil.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glClearStencil.xhtml">external</a> documentation. -spec clearStencil(S) -> 'ok' when S :: integer(). clearStencil(S) -> cast(5242, <<S:?GLint>>). @@ -5818,69 +2456,7 @@ clearStencil(S) -> %% is either `?GL_OBJECT_PLANE' or `?GL_EYE_PLANE', `Params' contains coefficients %% for the corresponding texture generation function. %% -%% If the texture generation function is `?GL_OBJECT_LINEAR', the function -%% -%% g=p 1×x o+p 2×y o+p 3×z o+p 4×w o -%% -%% is used, where g is the value computed for the coordinate named in `Coord' , p 1, -%% p 2, p 3, and p 4 are the four values supplied in `Params' , and x o, y o, z o, -%% and w o are the object coordinates of the vertex. This function can be used, for example, -%% to texture-map terrain using sea level as a reference plane (defined by p 1, p 2, p -%% 3, and p 4). The altitude of a terrain vertex is computed by the `?GL_OBJECT_LINEAR' -%% coordinate generation function as its distance from sea level; that altitude can then -%% be used to index the texture image to map white snow onto peaks and green grass onto foothills. -%% -%% -%% If the texture generation function is `?GL_EYE_LINEAR', the function -%% -%% g=(p 1)"×x e+(p 2)"×y e+(p 3)"×z e+(p 4)"×w e -%% -%% is used, where -%% -%% ((p 1)" (p 2)" (p 3)" (p 4)")=(p 1 p 2 p 3 p 4) M -1 -%% -%% and x e, y e, z e, and w e are the eye coordinates of the vertex, p 1, p 2, p 3, -%% and p 4 are the values supplied in `Params' , and M is the modelview matrix when ``gl:texGen'' -%% is invoked. If M is poorly conditioned or singular, texture coordinates generated by -%% the resulting function may be inaccurate or undefined. -%% -%% Note that the values in `Params' define a reference plane in eye coordinates. The -%% modelview matrix that is applied to them may not be the same one in effect when the polygon -%% vertices are transformed. This function establishes a field of texture coordinates that -%% can produce dynamic contour lines on moving objects. -%% -%% If the texture generation function is `?GL_SPHERE_MAP' and `Coord' is either `?GL_S' -%% or `?GL_T', s and t texture coordinates are generated as follows. Let `u' -%% be the unit vector pointing from the origin to the polygon vertex (in eye coordinates). -%% Let `n' sup prime be the current normal, after transformation to eye coordinates. -%% Let -%% -%% f=(f x f y f z) T be the reflection vector such that -%% -%% f=u-2 n" (n") T u -%% -%% Finally, let m=2 ((f x) 2+(f y) 2+(f z+1) 2). Then the values assigned to the s and t texture coordinates -%% are -%% -%% s=f x/m+1/2 -%% -%% t=f y/m+1/2 -%% -%% To enable or disable a texture-coordinate generation function, call {@link gl:enable/1} -%% or {@link gl:enable/1} with one of the symbolic texture-coordinate names (`?GL_TEXTURE_GEN_S' -%% , `?GL_TEXTURE_GEN_T', `?GL_TEXTURE_GEN_R', or `?GL_TEXTURE_GEN_Q') as -%% the argument. When enabled, the specified texture coordinate is computed according to -%% the generating function associated with that coordinate. When disabled, subsequent vertices -%% take the specified texture coordinate from the current set of texture coordinates. Initially, -%% all texture generation functions are set to `?GL_EYE_LINEAR' and are disabled. Both -%% s plane equations are (1, 0, 0, 0), both t plane equations are (0, 1, 0, 0), and all -%% r and q plane equations are (0, 0, 0, 0). -%% -%% When the ARB_multitexture extension is supported, ``gl:texGen'' sets the texture generation -%% parameters for the currently active texture unit, selected with {@link gl:activeTexture/1} . -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexGen.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTexGen.xml">external</a> documentation. -spec texGend(Coord, Pname, Param) -> 'ok' when Coord :: enum(),Pname :: enum(),Param :: float(). texGend(Coord,Pname,Param) -> cast(5243, <<Coord:?GLenum,Pname:?GLenum,Param:?GLdouble>>). @@ -5925,22 +2501,7 @@ texGeniv(Coord,Pname,Params) -> %% of the (`s', `t', `r', `q') texture coordinates, using the symbolic %% constant `?GL_S', `?GL_T', `?GL_R', or `?GL_Q'. %% -%% `Pname' specifies one of three symbolic names: -%% -%% `?GL_TEXTURE_GEN_MODE': `Params' returns the single-valued texture generation -%% function, a symbolic constant. The initial value is `?GL_EYE_LINEAR'. -%% -%% `?GL_OBJECT_PLANE': `Params' returns the four plane equation coefficients that -%% specify object linear-coordinate generation. Integer values, when requested, are mapped -%% directly from the internal floating-point representation. -%% -%% `?GL_EYE_PLANE': `Params' returns the four plane equation coefficients that -%% specify eye linear-coordinate generation. Integer values, when requested, are mapped directly -%% from the internal floating-point representation. The returned values are those maintained -%% in eye coordinates. They are not equal to the values specified using {@link gl:texGend/3} , -%% unless the modelview matrix was identity when {@link gl:texGend/3} was called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetTexGen.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetTexGen.xml">external</a> documentation. -spec getTexGendv(Coord, Pname) -> {float(),float(),float(),float()} when Coord :: enum(),Pname :: enum(). getTexGendv(Coord,Pname) -> call(5249, <<Coord:?GLenum,Pname:?GLenum>>). @@ -5959,14 +2520,14 @@ getTexGeniv(Coord,Pname) -> %% @doc glTexEnvf %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexEnvf.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec texEnvf(Target, Pname, Param) -> 'ok' when Target :: enum(),Pname :: enum(),Param :: float(). texEnvf(Target,Pname,Param) -> cast(5252, <<Target:?GLenum,Pname:?GLenum,Param:?GLfloat>>). %% @doc glTexEnvi %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexEnvi.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec texEnvi(Target, Pname, Param) -> 'ok' when Target :: enum(),Pname :: enum(),Param :: integer(). texEnvi(Target,Pname,Param) -> cast(5253, <<Target:?GLenum,Pname:?GLenum,Param:?GLint>>). @@ -5980,158 +2541,7 @@ texEnvi(Target,Pname,Param) -> %% , `?GL_ALPHA_SCALE', `?GL_SRC0_RGB', `?GL_SRC1_RGB', `?GL_SRC2_RGB', `?GL_SRC0_ALPHA' %% , `?GL_SRC1_ALPHA', or `?GL_SRC2_ALPHA'. %% -%% If `Pname' is `?GL_TEXTURE_ENV_MODE', then `Params' is (or points to) -%% the symbolic name of a texture function. Six texture functions may be specified: `?GL_ADD' -%% , `?GL_MODULATE', `?GL_DECAL', `?GL_BLEND', `?GL_REPLACE', or `?GL_COMBINE' -%% . -%% -%% The following table shows the correspondence of filtered texture values R t, G t, B t, -%% A t, L t, I t to texture source components. C s and A s are used by the texture functions -%% described below. -%% -%% <table><tbody><tr><td> Texture Base Internal Format </td><td> C s</td><td> A s</td></tr></tbody> -%% <tbody><tr><td>`?GL_ALPHA'</td><td> (0, 0, 0) </td><td> A t</td></tr><tr><td>`?GL_LUMINANCE' -%% </td><td> ( L t, L t, L t ) </td><td> 1 </td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td> -%% <td> ( L t, L t, L t ) </td><td> A t</td></tr><tr><td>`?GL_INTENSITY'</td><td> ( -%% I t, I t, I t ) </td><td> I t</td></tr><tr><td>`?GL_RGB'</td><td> ( R t, G t, B -%% t ) </td><td> 1 </td></tr><tr><td>`?GL_RGBA'</td><td> ( R t, G t, B t ) </td><td> -%% A t</td></tr></tbody></table> -%% -%% A texture function acts on the fragment to be textured using the texture image value -%% that applies to the fragment (see {@link gl:texParameterf/3} ) and produces an RGBA color -%% for that fragment. The following table shows how the RGBA color is produced for each of -%% the first five texture functions that can be chosen. C is a triple of color values (RGB) -%% and A is the associated alpha value. RGBA values extracted from a texture image are in -%% the range [0,1]. The subscript p refers to the color computed from the previous texture -%% stage (or the incoming fragment if processing texture stage 0), the subscript s to the -%% texture source color, the subscript c to the texture environment color, and the subscript -%% v indicates a value produced by the texture function. -%% -%% <table><tbody><tr><td> Texture Base Internal Format </td><td>`?Value'</td><td>`?GL_REPLACE' -%% Function </td><td>`?GL_MODULATE' Function </td><td>`?GL_DECAL' Function </td><td> -%% `?GL_BLEND' Function </td><td>`?GL_ADD' Function </td></tr></tbody><tbody><tr><td> -%% `?GL_ALPHA'</td><td> C v=</td><td> C p</td><td> C p</td><td> undefined </td><td> C p</td> -%% <td> C p</td></tr><tr><td></td><td> A v=</td><td> A s</td><td> A p A s</td><td></td><td> -%% A v=A p A s</td><td> A p A s</td></tr><tr><td>`?GL_LUMINANCE'</td><td> C v=</td><td> -%% C s</td><td> C p C s</td><td> undefined </td><td> C p (1-C s)+C c C s</td><td> C p+C s</td></tr> -%% <tr><td> (or 1) </td><td> A v=</td><td> A p</td><td> A p</td><td></td><td> A p</td><td> A -%% p</td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td><td> C v=</td><td> C s</td><td> C p C -%% s</td><td> undefined </td><td> C p (1-C s)+C c C s</td><td> C p+C s</td></tr><tr><td> (or 2) </td> -%% <td> A v=</td><td> A s</td><td> A p A s</td><td></td><td> A p A s</td><td> A p A s</td> -%% </tr><tr><td>`?GL_INTENSITY'</td><td> C v=</td><td> C s</td><td> C p C s</td><td> -%% undefined </td><td> C p (1-C s)+C c C s</td><td> C p+C s</td></tr><tr><td></td><td> A v=</td><td> -%% A s</td><td> A p A s</td><td></td><td> A p (1-A s)+A c A s</td><td> A p+A s</td></tr><tr><td>`?GL_RGB' -%% </td><td> C v=</td><td> C s</td><td> C p C s</td><td> C s</td><td> C p (1-C s)+C c C s</td><td> -%% C p+C s</td></tr><tr><td> (or 3) </td><td> A v=</td><td> A p</td><td> A p</td><td> A p</td> -%% <td> A p</td><td> A p</td></tr><tr><td>`?GL_RGBA'</td><td> C v=</td><td> C s</td><td> -%% C p C s</td><td> C p (1-A s)+C s A s</td><td> C p (1-C s)+C c C s</td><td> C p+C s</td></tr><tr><td> -%% (or 4) </td><td> A v=</td><td> A s</td><td> A p A s</td><td> A p</td><td> A p A s</td><td> -%% A p A s</td></tr></tbody></table> -%% -%% If `Pname' is `?GL_TEXTURE_ENV_MODE', and `Params' is `?GL_COMBINE', -%% the form of the texture function depends on the values of `?GL_COMBINE_RGB' and `?GL_COMBINE_ALPHA' -%% . -%% -%% The following describes how the texture sources, as specified by `?GL_SRC0_RGB', `?GL_SRC1_RGB' -%% , `?GL_SRC2_RGB', `?GL_SRC0_ALPHA', `?GL_SRC1_ALPHA', and `?GL_SRC2_ALPHA' -%% , are combined to produce a final texture color. In the following tables, `?GL_SRC0_c' -%% is represented by Arg0, `?GL_SRC1_c' is represented by Arg1, and `?GL_SRC2_c' -%% is represented by Arg2. -%% -%% `?GL_COMBINE_RGB' accepts any of `?GL_REPLACE', `?GL_MODULATE', `?GL_ADD' -%% , `?GL_ADD_SIGNED', `?GL_INTERPOLATE', `?GL_SUBTRACT', `?GL_DOT3_RGB', -%% or `?GL_DOT3_RGBA'. -%% -%% <table><tbody><tr><td>`?GL_COMBINE_RGB'</td><td>` Texture Function '</td></tr></tbody> -%% <tbody><tr><td>`?GL_REPLACE'</td><td> Arg0</td></tr><tr><td>`?GL_MODULATE'</td><td> -%% Arg0×Arg1</td></tr><tr><td>`?GL_ADD'</td><td> Arg0+Arg1</td></tr><tr><td>`?GL_ADD_SIGNED' -%% </td><td> Arg0+Arg1-0.5</td></tr><tr><td>`?GL_INTERPOLATE'</td><td> Arg0×Arg2+Arg1×(1- -%% Arg2)</td> -%% </tr><tr><td>`?GL_SUBTRACT'</td><td> Arg0-Arg1</td></tr><tr><td>`?GL_DOT3_RGB' -%% or `?GL_DOT3_RGBA'</td><td> 4×((((Arg0 r)-0.5)×((Arg1 r)-0.5))+(((Arg0 g)-0.5)×((Arg1 g)-0.5))+(((Arg0 b)-0.5)×((Arg1 b)-0.5)))</td></tr></tbody></table> -%% -%% The scalar results for `?GL_DOT3_RGB' and `?GL_DOT3_RGBA' are placed into each -%% of the 3 (RGB) or 4 (RGBA) components on output. -%% -%% Likewise, `?GL_COMBINE_ALPHA' accepts any of `?GL_REPLACE', `?GL_MODULATE', -%% `?GL_ADD', `?GL_ADD_SIGNED', `?GL_INTERPOLATE', or `?GL_SUBTRACT'. -%% The following table describes how alpha values are combined: -%% -%% <table><tbody><tr><td>`?GL_COMBINE_ALPHA'</td><td>` Texture Function '</td></tr> -%% </tbody><tbody><tr><td>`?GL_REPLACE'</td><td> Arg0</td></tr><tr><td>`?GL_MODULATE' -%% </td><td> Arg0×Arg1</td></tr><tr><td>`?GL_ADD'</td><td> Arg0+Arg1</td></tr><tr><td>`?GL_ADD_SIGNED' -%% </td><td> Arg0+Arg1-0.5</td></tr><tr><td>`?GL_INTERPOLATE'</td><td> Arg0×Arg2+Arg1×(1- -%% Arg2)</td> -%% </tr><tr><td>`?GL_SUBTRACT'</td><td> Arg0-Arg1</td></tr></tbody></table> -%% -%% In the following tables, the value C s represents the color sampled from the currently -%% bound texture, C c represents the constant texture-environment color, C f represents -%% the primary color of the incoming fragment, and C p represents the color computed from -%% the previous texture stage or C f if processing texture stage 0. Likewise, A s, A c, -%% A f, and A p represent the respective alpha values. -%% -%% The following table describes the values assigned to Arg0, Arg1, and Arg2 based upon -%% the RGB sources and operands: -%% -%% <table><tbody><tr><td>`?GL_SRCn_RGB'</td><td>`?GL_OPERANDn_RGB'</td><td>` Argument Value ' -%% </td></tr></tbody><tbody><tr><td>`?GL_TEXTURE'</td><td>`?GL_SRC_COLOR'</td><td>(C -%% s)</td> -%% </tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_COLOR'</td><td> 1-(C s)</td></tr><tr><td></td><td> -%% `?GL_SRC_ALPHA'</td><td>(A s)</td></tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_ALPHA'</td> -%% <td> 1-(A s)</td></tr><tr><td>`?GL_TEXTUREn'</td><td>`?GL_SRC_COLOR'</td><td>(C s)</td></tr> -%% <tr><td></td><td>`?GL_ONE_MINUS_SRC_COLOR'</td><td> 1-(C s)</td></tr><tr><td></td><td>`?GL_SRC_ALPHA' -%% </td><td>(A s)</td></tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_ALPHA'</td><td> 1-(A s)</td></tr><tr> -%% <td>`?GL_CONSTANT'</td><td>`?GL_SRC_COLOR'</td><td>(C c)</td></tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_COLOR' -%% </td><td> 1-(C c)</td></tr><tr><td></td><td>`?GL_SRC_ALPHA'</td><td>(A c)</td></tr><tr><td></td> -%% <td>`?GL_ONE_MINUS_SRC_ALPHA'</td><td> 1-(A c)</td></tr><tr><td>`?GL_PRIMARY_COLOR'</td> -%% <td>`?GL_SRC_COLOR'</td><td>(C f)</td></tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_COLOR'</td> -%% <td> 1-(C f)</td></tr><tr><td></td><td>`?GL_SRC_ALPHA'</td><td>(A f)</td></tr><tr><td></td><td> -%% `?GL_ONE_MINUS_SRC_ALPHA'</td><td> 1-(A f)</td></tr><tr><td>`?GL_PREVIOUS'</td><td>`?GL_SRC_COLOR' -%% </td><td>(C p)</td></tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_COLOR'</td><td> 1-(C p)</td></tr><tr> -%% <td></td><td>`?GL_SRC_ALPHA'</td><td>(A p)</td></tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_ALPHA' -%% </td><td> 1-(A p)</td></tr></tbody></table> -%% -%% For `?GL_TEXTUREn' sources, C s and A s represent the color and alpha, respectively, -%% produced from texture stage n. -%% -%% The follow table describes the values assigned to Arg0, Arg1, and Arg2 based upon -%% the alpha sources and operands: -%% -%% <table><tbody><tr><td>`?GL_SRCn_ALPHA'</td><td>`?GL_OPERANDn_ALPHA'</td><td>` Argument Value ' -%% </td></tr></tbody><tbody><tr><td>`?GL_TEXTURE'</td><td>`?GL_SRC_ALPHA'</td><td>(A -%% s)</td> -%% </tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_ALPHA'</td><td> 1-(A s)</td></tr><tr><td>`?GL_TEXTUREn' -%% </td><td>`?GL_SRC_ALPHA'</td><td>(A s)</td></tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_ALPHA' -%% </td><td> 1-(A s)</td></tr><tr><td>`?GL_CONSTANT'</td><td>`?GL_SRC_ALPHA'</td><td>(A -%% c)</td> -%% </tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_ALPHA'</td><td> 1-(A c)</td></tr><tr><td>`?GL_PRIMARY_COLOR' -%% </td><td>`?GL_SRC_ALPHA'</td><td>(A f)</td></tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_ALPHA' -%% </td><td> 1-(A f)</td></tr><tr><td>`?GL_PREVIOUS'</td><td>`?GL_SRC_ALPHA'</td><td>(A -%% p)</td> -%% </tr><tr><td></td><td>`?GL_ONE_MINUS_SRC_ALPHA'</td><td> 1-(A p)</td></tr></tbody></table> -%% -%% -%% The RGB and alpha results of the texture function are multipled by the values of `?GL_RGB_SCALE' -%% and `?GL_ALPHA_SCALE', respectively, and clamped to the range [0 1]. -%% -%% If `Pname' is `?GL_TEXTURE_ENV_COLOR', `Params' is a pointer to an array -%% that holds an RGBA color consisting of four values. Integer color components are interpreted -%% linearly such that the most positive integer maps to 1.0, and the most negative integer -%% maps to -1.0. The values are clamped to the range [0,1] when they are specified. C c -%% takes these four values. -%% -%% If `Pname' is `?GL_TEXTURE_LOD_BIAS', the value specified is added to the texture -%% level-of-detail parameter, that selects which mipmap, or mipmaps depending upon the selected -%% `?GL_TEXTURE_MIN_FILTER', will be sampled. -%% -%% `?GL_TEXTURE_ENV_MODE' defaults to `?GL_MODULATE' and `?GL_TEXTURE_ENV_COLOR' -%% defaults to (0, 0, 0, 0). -%% -%% If `Target' is `?GL_POINT_SPRITE' and `Pname' is `?GL_COORD_REPLACE', -%% the boolean value specified is used to either enable or disable point sprite texture coordinate -%% replacement. The default value is `?GL_FALSE'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexEnv.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTexEnv.xml">external</a> documentation. -spec texEnvfv(Target, Pname, Params) -> 'ok' when Target :: enum(),Pname :: enum(),Params :: tuple(). texEnvfv(Target,Pname,Params) -> cast(5254, <<Target:?GLenum,Pname:?GLenum,(size(Params)):?GLuint, @@ -6149,80 +2559,7 @@ texEnviv(Target,Pname,Params) -> %% ``gl:getTexEnv'' returns in `Params' selected values of a texture environment that %% was specified with {@link gl:texEnvfv/3} . `Target' specifies a texture environment. %% -%% When `Target' is `?GL_TEXTURE_FILTER_CONTROL', `Pname' must be `?GL_TEXTURE_LOD_BIAS' -%% . When `Target' is `?GL_POINT_SPRITE', `Pname' must be `?GL_COORD_REPLACE' -%% . When `Target' is `?GL_TEXTURE_ENV', `Pname' can be `?GL_TEXTURE_ENV_MODE' -%% , `?GL_TEXTURE_ENV_COLOR', `?GL_COMBINE_RGB', `?GL_COMBINE_ALPHA', `?GL_RGB_SCALE' -%% , `?GL_ALPHA_SCALE', `?GL_SRC0_RGB', `?GL_SRC1_RGB', `?GL_SRC2_RGB', -%% `?GL_SRC0_ALPHA', `?GL_SRC1_ALPHA', or `?GL_SRC2_ALPHA'. -%% -%% `Pname' names a specific texture environment parameter, as follows: -%% -%% `?GL_TEXTURE_ENV_MODE': `Params' returns the single-valued texture environment -%% mode, a symbolic constant. The initial value is `?GL_MODULATE'. -%% -%% `?GL_TEXTURE_ENV_COLOR': `Params' returns four integer or floating-point values -%% that are the texture environment color. Integer values, when requested, are linearly mapped -%% from the internal floating-point representation such that 1.0 maps to the most positive -%% representable integer, and -1.0 maps to the most negative representable integer. The -%% initial value is (0, 0, 0, 0). -%% -%% `?GL_TEXTURE_LOD_BIAS': `Params' returns a single floating-point value that -%% is the texture level-of-detail bias. The initial value is 0. -%% -%% `?GL_COMBINE_RGB': `Params' returns a single symbolic constant value representing -%% the current RGB combine mode. The initial value is `?GL_MODULATE'. -%% -%% `?GL_COMBINE_ALPHA': `Params' returns a single symbolic constant value representing -%% the current alpha combine mode. The initial value is `?GL_MODULATE'. -%% -%% `?GL_SRC0_RGB': `Params' returns a single symbolic constant value representing -%% the texture combiner zero's RGB source. The initial value is `?GL_TEXTURE'. -%% -%% `?GL_SRC1_RGB': `Params' returns a single symbolic constant value representing -%% the texture combiner one's RGB source. The initial value is `?GL_PREVIOUS'. -%% -%% `?GL_SRC2_RGB': `Params' returns a single symbolic constant value representing -%% the texture combiner two's RGB source. The initial value is `?GL_CONSTANT'. -%% -%% `?GL_SRC0_ALPHA': `Params' returns a single symbolic constant value representing -%% the texture combiner zero's alpha source. The initial value is `?GL_TEXTURE'. -%% -%% `?GL_SRC1_ALPHA': `Params' returns a single symbolic constant value representing -%% the texture combiner one's alpha source. The initial value is `?GL_PREVIOUS'. -%% -%% `?GL_SRC2_ALPHA': `Params' returns a single symbolic constant value representing -%% the texture combiner two's alpha source. The initial value is `?GL_CONSTANT'. -%% -%% `?GL_OPERAND0_RGB': `Params' returns a single symbolic constant value representing -%% the texture combiner zero's RGB operand. The initial value is `?GL_SRC_COLOR'. -%% -%% `?GL_OPERAND1_RGB': `Params' returns a single symbolic constant value representing -%% the texture combiner one's RGB operand. The initial value is `?GL_SRC_COLOR'. -%% -%% `?GL_OPERAND2_RGB': `Params' returns a single symbolic constant value representing -%% the texture combiner two's RGB operand. The initial value is `?GL_SRC_ALPHA'. -%% -%% `?GL_OPERAND0_ALPHA': `Params' returns a single symbolic constant value representing -%% the texture combiner zero's alpha operand. The initial value is `?GL_SRC_ALPHA'. -%% -%% `?GL_OPERAND1_ALPHA': `Params' returns a single symbolic constant value representing -%% the texture combiner one's alpha operand. The initial value is `?GL_SRC_ALPHA'. -%% -%% `?GL_OPERAND2_ALPHA': `Params' returns a single symbolic constant value representing -%% the texture combiner two's alpha operand. The initial value is `?GL_SRC_ALPHA'. -%% -%% `?GL_RGB_SCALE': `Params' returns a single floating-point value representing -%% the current RGB texture combiner scaling factor. The initial value is 1.0. -%% -%% `?GL_ALPHA_SCALE': `Params' returns a single floating-point value representing -%% the current alpha texture combiner scaling factor. The initial value is 1.0. -%% -%% `?GL_COORD_REPLACE': `Params' returns a single boolean value representing the -%% current point sprite texture coordinate replacement enable state. The initial value is `?GL_FALSE' -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetTexEnv.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetTexEnv.xml">external</a> documentation. -spec getTexEnvfv(Target, Pname) -> {float(),float(),float(),float()} when Target :: enum(),Pname :: enum(). getTexEnvfv(Target,Pname) -> call(5256, <<Target:?GLenum,Pname:?GLenum>>). @@ -6240,218 +2577,7 @@ getTexEnviv(Target,Pname) -> %% , `?GL_TEXTURE_2D', `?GL_TEXTURE_1D_ARRAY', `?GL_TEXTURE_2D_ARRAY', `?GL_TEXTURE_RECTANGLE' %% , or `?GL_TEXTURE_3D'. The following symbols are accepted in `Pname' : %% -%% `?GL_TEXTURE_BASE_LEVEL': Specifies the index of the lowest defined mipmap level. -%% This is an integer value. The initial value is 0. -%% -%% -%% -%% `?GL_TEXTURE_BORDER_COLOR': The data in `Params' specifies four values that -%% define the border values that should be used for border texels. If a texel is sampled -%% from the border of the texture, the values of `?GL_TEXTURE_BORDER_COLOR' are interpreted -%% as an RGBA color to match the texture's internal format and substituted for the non-existent -%% texel data. If the texture contains depth components, the first component of `?GL_TEXTURE_BORDER_COLOR' -%% is interpreted as a depth value. The initial value is ( 0.0, 0.0, 0.0, 0.0 ). -%% -%% If the values for `?GL_TEXTURE_BORDER_COLOR' are specified with ``gl:texParameterIiv'' -%% or ``gl:texParameterIuiv'', the values are stored unmodified with an internal data -%% type of integer. If specified with ``gl:texParameteriv'', they are converted to floating -%% point with the following equation: f=2 c+1 2 b-/1. If specified with ``gl:texParameterfv'' -%% , they are stored unmodified as floating-point values. -%% -%% `?GL_TEXTURE_COMPARE_FUNC': Specifies the comparison operator used when `?GL_TEXTURE_COMPARE_MODE' -%% is set to `?GL_COMPARE_REF_TO_TEXTURE'. Permissible values are: <table><tbody><tr><td> -%% ` Texture Comparison Function '</td><td>` Computed result '</td></tr></tbody><tbody> -%% <tr><td>`?GL_LEQUAL'</td><td> result={1.0 0.0 r<=(D t) r>(D t))</td></tr><tr><td>`?GL_GEQUAL'</td><td> -%% result={1.0 0.0 r>=(D t) r<(D t))</td></tr><tr><td>`?GL_LESS'</td><td> result={1.0 0.0 r<(D t) r>=(D t))</td></tr><tr><td>`?GL_GREATER' -%% </td><td> result={1.0 0.0 r>(D t) r<=(D t))</td></tr><tr><td>`?GL_EQUAL'</td><td> result={1.0 0.0 r=(D t) r&ne; -%% (D t))</td></tr><tr><td>`?GL_NOTEQUAL' -%% </td><td> result={1.0 0.0 r&ne;(D t) r=(D t))</td></tr><tr><td>`?GL_ALWAYS'</td><td> result=1.0</td></tr><tr><td> -%% `?GL_NEVER'</td><td> result=0.0</td></tr></tbody></table> where r is the current -%% interpolated texture coordinate, and D t is the depth texture value sampled from the -%% currently bound depth texture. result is assigned to the the red channel. -%% -%% `?GL_TEXTURE_COMPARE_MODE': Specifies the texture comparison mode for currently -%% bound depth textures. That is, a texture whose internal format is `?GL_DEPTH_COMPONENT_*' -%% ; see {@link gl:texImage2D/9} ) Permissible values are: -%% -%% `?GL_COMPARE_REF_TO_TEXTURE': Specifies that the interpolated and clamped r texture -%% coordinate should be compared to the value in the currently bound depth texture. See the -%% discussion of `?GL_TEXTURE_COMPARE_FUNC' for details of how the comparison is evaluated. -%% The result of the comparison is assigned to the red channel. -%% -%% `?GL_NONE': Specifies that the red channel should be assigned the appropriate value -%% from the currently bound depth texture. -%% -%% `?GL_TEXTURE_LOD_BIAS': `Params' specifies a fixed bias value that is to be -%% added to the level-of-detail parameter for the texture before texture sampling. The specified -%% value is added to the shader-supplied bias value (if any) and subsequently clamped into -%% the implementation-defined range [( - bias max)(bias max)], where bias max is the value of the implementation -%% defined constant `?GL_MAX_TEXTURE_LOD_BIAS'. The initial value is 0.0. -%% -%% `?GL_TEXTURE_MIN_FILTER': The texture minifying function is used whenever the level-of-detail -%% function used when sampling from the texture determines that the texture should be minified. -%% There are six defined minifying functions. Two of them use either the nearest texture -%% elements or a weighted average of multiple texture elements to compute the texture value. -%% The other four use mipmaps. -%% -%% A mipmap is an ordered set of arrays representing the same image at progressively lower -%% resolutions. If the texture has dimensions 2 n×2 m, there are max(n m)+1 mipmaps. The first -%% mipmap is the original texture, with dimensions 2 n×2 m. Each subsequent mipmap has -%% dimensions 2(k-1)×2(l-1), where 2 k×2 l are the dimensions of the previous mipmap, until either -%% k=0 or l=0. At that point, subsequent mipmaps have dimension 1×2(l-1) or 2(k-1)×1 until -%% the final mipmap, which has dimension 1×1. To define the mipmaps, call {@link gl:texImage1D/8} -%% , {@link gl:texImage2D/9} , {@link gl:texImage3D/10} , {@link gl:copyTexImage1D/7} , or {@link gl:copyTexImage2D/8} -%% with the `level' argument indicating the order of the mipmaps. Level 0 is the original -%% texture; level max(n m) is the final 1×1 mipmap. -%% -%% `Params' supplies a function for minifying the texture as one of the following: -%% -%% `?GL_NEAREST': Returns the value of the texture element that is nearest (in Manhattan -%% distance) to the specified texture coordinates. -%% -%% `?GL_LINEAR': Returns the weighted average of the four texture elements that are -%% closest to the specified texture coordinates. These can include items wrapped or repeated -%% from other parts of a texture, depending on the values of `?GL_TEXTURE_WRAP_S' and `?GL_TEXTURE_WRAP_T' -%% , and on the exact mapping. -%% -%% `?GL_NEAREST_MIPMAP_NEAREST': Chooses the mipmap that most closely matches the size -%% of the pixel being textured and uses the `?GL_NEAREST' criterion (the texture element -%% closest to the specified texture coordinates) to produce a texture value. -%% -%% `?GL_LINEAR_MIPMAP_NEAREST': Chooses the mipmap that most closely matches the size -%% of the pixel being textured and uses the `?GL_LINEAR' criterion (a weighted average -%% of the four texture elements that are closest to the specified texture coordinates) to -%% produce a texture value. -%% -%% `?GL_NEAREST_MIPMAP_LINEAR': Chooses the two mipmaps that most closely match the -%% size of the pixel being textured and uses the `?GL_NEAREST' criterion (the texture -%% element closest to the specified texture coordinates ) to produce a texture value from -%% each mipmap. The final texture value is a weighted average of those two values. -%% -%% `?GL_LINEAR_MIPMAP_LINEAR': Chooses the two mipmaps that most closely match the -%% size of the pixel being textured and uses the `?GL_LINEAR' criterion (a weighted -%% average of the texture elements that are closest to the specified texture coordinates) -%% to produce a texture value from each mipmap. The final texture value is a weighted average -%% of those two values. -%% -%% As more texture elements are sampled in the minification process, fewer aliasing artifacts -%% will be apparent. While the `?GL_NEAREST' and `?GL_LINEAR' minification functions -%% can be faster than the other four, they sample only one or multiple texture elements to -%% determine the texture value of the pixel being rendered and can produce moire patterns -%% or ragged transitions. The initial value of `?GL_TEXTURE_MIN_FILTER' is `?GL_NEAREST_MIPMAP_LINEAR' -%% . -%% -%% -%% -%% `?GL_TEXTURE_MAG_FILTER': The texture magnification function is used whenever the -%% level-of-detail function used when sampling from the texture determines that the texture -%% should be magified. It sets the texture magnification function to either `?GL_NEAREST' -%% or `?GL_LINEAR' (see below). `?GL_NEAREST' is generally faster than `?GL_LINEAR' -%% , but it can produce textured images with sharper edges because the transition between -%% texture elements is not as smooth. The initial value of `?GL_TEXTURE_MAG_FILTER' is `?GL_LINEAR' -%% . -%% -%% `?GL_NEAREST': Returns the value of the texture element that is nearest (in Manhattan -%% distance) to the specified texture coordinates. -%% -%% `?GL_LINEAR': Returns the weighted average of the texture elements that are closest -%% to the specified texture coordinates. These can include items wrapped or repeated from -%% other parts of a texture, depending on the values of `?GL_TEXTURE_WRAP_S' and `?GL_TEXTURE_WRAP_T' -%% , and on the exact mapping. -%% -%% -%% -%% `?GL_TEXTURE_MIN_LOD': Sets the minimum level-of-detail parameter. This floating-point -%% value limits the selection of highest resolution mipmap (lowest mipmap level). The initial -%% value is -1000. -%% -%% -%% -%% `?GL_TEXTURE_MAX_LOD': Sets the maximum level-of-detail parameter. This floating-point -%% value limits the selection of the lowest resolution mipmap (highest mipmap level). The -%% initial value is 1000. -%% -%% -%% -%% `?GL_TEXTURE_MAX_LEVEL': Sets the index of the highest defined mipmap level. This -%% is an integer value. The initial value is 1000. -%% -%% -%% -%% `?GL_TEXTURE_SWIZZLE_R': Sets the swizzle that will be applied to the r component -%% of a texel before it is returned to the shader. Valid values for `Param' are `?GL_RED' -%% , `?GL_GREEN', `?GL_BLUE', `?GL_ALPHA', `?GL_ZERO' and `?GL_ONE'. -%% If `?GL_TEXTURE_SWIZZLE_R' is `?GL_RED', the value for r will be taken from -%% the first channel of the fetched texel. If `?GL_TEXTURE_SWIZZLE_R' is `?GL_GREEN' -%% , the value for r will be taken from the second channel of the fetched texel. If `?GL_TEXTURE_SWIZZLE_R' -%% is `?GL_BLUE', the value for r will be taken from the third channel of the fetched -%% texel. If `?GL_TEXTURE_SWIZZLE_R' is `?GL_ALPHA', the value for r will be taken -%% from the fourth channel of the fetched texel. If `?GL_TEXTURE_SWIZZLE_R' is `?GL_ZERO' -%% , the value for r will be subtituted with 0.0. If `?GL_TEXTURE_SWIZZLE_R' is `?GL_ONE' -%% , the value for r will be subtituted with 1.0. The initial value is `?GL_RED'. -%% -%% -%% -%% `?GL_TEXTURE_SWIZZLE_G': Sets the swizzle that will be applied to the g component -%% of a texel before it is returned to the shader. Valid values for `Param' and their -%% effects are similar to those of `?GL_TEXTURE_SWIZZLE_R'. The initial value is `?GL_GREEN' -%% . -%% -%% -%% -%% `?GL_TEXTURE_SWIZZLE_B': Sets the swizzle that will be applied to the b component -%% of a texel before it is returned to the shader. Valid values for `Param' and their -%% effects are similar to those of `?GL_TEXTURE_SWIZZLE_R'. The initial value is `?GL_BLUE' -%% . -%% -%% -%% -%% `?GL_TEXTURE_SWIZZLE_A': Sets the swizzle that will be applied to the a component -%% of a texel before it is returned to the shader. Valid values for `Param' and their -%% effects are similar to those of `?GL_TEXTURE_SWIZZLE_R'. The initial value is `?GL_ALPHA' -%% . -%% -%% -%% -%% `?GL_TEXTURE_SWIZZLE_RGBA': Sets the swizzles that will be applied to the r, g, -%% b, and a components of a texel before they are returned to the shader. Valid values for `Params' -%% and their effects are similar to those of `?GL_TEXTURE_SWIZZLE_R', except that all -%% channels are specified simultaneously. Setting the value of `?GL_TEXTURE_SWIZZLE_RGBA' -%% is equivalent (assuming no errors are generated) to setting the parameters of each of `?GL_TEXTURE_SWIZZLE_R' -%% , `?GL_TEXTURE_SWIZZLE_G', `?GL_TEXTURE_SWIZZLE_B', and `?GL_TEXTURE_SWIZZLE_A' -%% successively. -%% -%% -%% -%% `?GL_TEXTURE_WRAP_S': Sets the wrap parameter for texture coordinate s to either `?GL_CLAMP_TO_EDGE' -%% , `?GL_CLAMP_TO_BORDER', `?GL_MIRRORED_REPEAT', or `?GL_REPEAT'. `?GL_CLAMP_TO_EDGE' -%% causes s coordinates to be clamped to the range [(1 2/N) 1-(1 2/N)], where N is the size of the texture -%% in the direction of clamping. `?GL_CLAMP_TO_BORDER' evaluates s coordinates in a -%% similar manner to `?GL_CLAMP_TO_EDGE'. However, in cases where clamping would have -%% occurred in `?GL_CLAMP_TO_EDGE' mode, the fetched texel data is substituted with -%% the values specified by `?GL_TEXTURE_BORDER_COLOR'. `?GL_REPEAT' causes the -%% integer part of the s coordinate to be ignored; the GL uses only the fractional part, -%% thereby creating a repeating pattern. `?GL_MIRRORED_REPEAT' causes the s coordinate -%% to be set to the fractional part of the texture coordinate if the integer part of s -%% is even; if the integer part of s is odd, then the s texture coordinate is set to 1- -%% frac(s), where frac(s) represents the fractional part of s. Initially, `?GL_TEXTURE_WRAP_S' -%% is set to `?GL_REPEAT'. -%% -%% -%% -%% `?GL_TEXTURE_WRAP_T': Sets the wrap parameter for texture coordinate t to either `?GL_CLAMP_TO_EDGE' -%% , `?GL_CLAMP_TO_BORDER', `?GL_MIRRORED_REPEAT', or `?GL_REPEAT'. See the -%% discussion under `?GL_TEXTURE_WRAP_S'. Initially, `?GL_TEXTURE_WRAP_T' is set -%% to `?GL_REPEAT'. -%% -%% -%% -%% `?GL_TEXTURE_WRAP_R': Sets the wrap parameter for texture coordinate r to either `?GL_CLAMP_TO_EDGE' -%% , `?GL_CLAMP_TO_BORDER', `?GL_MIRRORED_REPEAT', or `?GL_REPEAT'. See the -%% discussion under `?GL_TEXTURE_WRAP_S'. Initially, `?GL_TEXTURE_WRAP_R' is set -%% to `?GL_REPEAT'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexParameter.xhtml">external</a> documentation. -spec texParameterf(Target, Pname, Param) -> 'ok' when Target :: enum(),Pname :: enum(),Param :: float(). texParameterf(Target,Pname,Param) -> cast(5258, <<Target:?GLenum,Pname:?GLenum,Param:?GLfloat>>). @@ -6486,70 +2612,7 @@ texParameteriv(Target,Pname,Params) -> %% rectangle, cube-mapped or cube-mapped array texturing, respectively. `Pname' accepts %% the same symbols as {@link gl:texParameterf/3} , with the same interpretations: %% -%% `?GL_TEXTURE_MAG_FILTER': Returns the single-valued texture magnification filter, -%% a symbolic constant. The initial value is `?GL_LINEAR'. -%% -%% `?GL_TEXTURE_MIN_FILTER': Returns the single-valued texture minification filter, -%% a symbolic constant. The initial value is `?GL_NEAREST_MIPMAP_LINEAR'. -%% -%% `?GL_TEXTURE_MIN_LOD': Returns the single-valued texture minimum level-of-detail -%% value. The initial value is -1000. -%% -%% `?GL_TEXTURE_MAX_LOD': Returns the single-valued texture maximum level-of-detail -%% value. The initial value is 1000. -%% -%% `?GL_TEXTURE_BASE_LEVEL': Returns the single-valued base texture mipmap level. The -%% initial value is 0. -%% -%% `?GL_TEXTURE_MAX_LEVEL': Returns the single-valued maximum texture mipmap array -%% level. The initial value is 1000. -%% -%% `?GL_TEXTURE_SWIZZLE_R': Returns the red component swizzle. The initial value is `?GL_RED' -%% . -%% -%% `?GL_TEXTURE_SWIZZLE_G': Returns the green component swizzle. The initial value is `?GL_GREEN' -%% . -%% -%% `?GL_TEXTURE_SWIZZLE_B': Returns the blue component swizzle. The initial value is `?GL_BLUE' -%% . -%% -%% `?GL_TEXTURE_SWIZZLE_A': Returns the alpha component swizzle. The initial value is `?GL_ALPHA' -%% . -%% -%% `?GL_TEXTURE_SWIZZLE_RGBA': Returns the component swizzle for all channels in a -%% single query. -%% -%% `?GL_TEXTURE_WRAP_S': Returns the single-valued wrapping function for texture coordinate -%% s, a symbolic constant. The initial value is `?GL_REPEAT'. -%% -%% `?GL_TEXTURE_WRAP_T': Returns the single-valued wrapping function for texture coordinate -%% t, a symbolic constant. The initial value is `?GL_REPEAT'. -%% -%% `?GL_TEXTURE_WRAP_R': Returns the single-valued wrapping function for texture coordinate -%% r, a symbolic constant. The initial value is `?GL_REPEAT'. -%% -%% `?GL_TEXTURE_BORDER_COLOR': Returns four integer or floating-point numbers that -%% comprise the RGBA color of the texture border. Floating-point values are returned in the -%% range [0 1]. Integer values are returned as a linear mapping of the internal floating-point -%% representation such that 1.0 maps to the most positive representable integer and -1.0 -%% maps to the most negative representable integer. The initial value is (0, 0, 0, 0). -%% -%% `?GL_TEXTURE_COMPARE_MODE': Returns a single-valued texture comparison mode, a symbolic -%% constant. The initial value is `?GL_NONE'. See {@link gl:texParameterf/3} . -%% -%% `?GL_TEXTURE_COMPARE_FUNC': Returns a single-valued texture comparison function, -%% a symbolic constant. The initial value is `?GL_LEQUAL'. See {@link gl:texParameterf/3} . -%% -%% -%% In addition to the parameters that may be set with {@link gl:texParameterf/3} , ``gl:getTexParameter'' -%% accepts the following read-only parameters: -%% -%% `?GL_TEXTURE_IMMUTABLE_FORMAT': Returns non-zero if the texture has an immutable -%% format. Textures become immutable if their storage is specified with {@link gl:texStorage1D/4} -%% , {@link gl:texStorage2D/5} or {@link gl:texStorage3D/6} . The initial value is `?GL_FALSE' -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetTexParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetTexParameter.xhtml">external</a> documentation. -spec getTexParameterfv(Target, Pname) -> {float(),float(),float(),float()} when Target :: enum(),Pname :: enum(). getTexParameterfv(Target,Pname) -> call(5262, <<Target:?GLenum,Pname:?GLenum>>). @@ -6570,67 +2633,7 @@ getTexParameteriv(Target,Pname) -> %% , `?GL_TEXTURE_CUBE_MAP_POSITIVE_Z', `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z', or `?GL_PROXY_TEXTURE_CUBE_MAP' %% . %% -%% `?GL_MAX_TEXTURE_SIZE', and `?GL_MAX_3D_TEXTURE_SIZE' are not really descriptive -%% enough. It has to report the largest square texture image that can be accommodated with -%% mipmaps and borders, but a long skinny texture, or a texture without mipmaps and borders, -%% may easily fit in texture memory. The proxy targets allow the user to more accurately -%% query whether the GL can accommodate a texture of a given configuration. If the texture -%% cannot be accommodated, the texture state variables, which may be queried with ``gl:getTexLevelParameter'' -%% , are set to 0. If the texture can be accommodated, the texture state values will be set -%% as they would be set for a non-proxy target. -%% -%% `Pname' specifies the texture parameter whose value or values will be returned. -%% -%% The accepted parameter names are as follows: -%% -%% `?GL_TEXTURE_WIDTH': `Params' returns a single value, the width of the texture -%% image. This value includes the border of the texture image. The initial value is 0. -%% -%% `?GL_TEXTURE_HEIGHT': `Params' returns a single value, the height of the texture -%% image. This value includes the border of the texture image. The initial value is 0. -%% -%% `?GL_TEXTURE_DEPTH': `Params' returns a single value, the depth of the texture -%% image. This value includes the border of the texture image. The initial value is 0. -%% -%% `?GL_TEXTURE_INTERNAL_FORMAT': `Params' returns a single value, the internal -%% format of the texture image. -%% -%% `?GL_TEXTURE_RED_TYPE', -%% -%% `?GL_TEXTURE_GREEN_TYPE', -%% -%% `?GL_TEXTURE_BLUE_TYPE', -%% -%% `?GL_TEXTURE_ALPHA_TYPE', -%% -%% `?GL_TEXTURE_DEPTH_TYPE': The data type used to store the component. The types `?GL_NONE' -%% , `?GL_SIGNED_NORMALIZED', `?GL_UNSIGNED_NORMALIZED', `?GL_FLOAT', `?GL_INT' -%% , and `?GL_UNSIGNED_INT' may be returned to indicate signed normalized fixed-point, -%% unsigned normalized fixed-point, floating-point, integer unnormalized, and unsigned integer -%% unnormalized components, respectively. -%% -%% `?GL_TEXTURE_RED_SIZE', -%% -%% `?GL_TEXTURE_GREEN_SIZE', -%% -%% `?GL_TEXTURE_BLUE_SIZE', -%% -%% `?GL_TEXTURE_ALPHA_SIZE', -%% -%% `?GL_TEXTURE_DEPTH_SIZE': The internal storage resolution of an individual component. -%% The resolution chosen by the GL will be a close match for the resolution requested by -%% the user with the component argument of {@link gl:texImage1D/8} , {@link gl:texImage2D/9} , {@link gl:texImage3D/10} -%% , {@link gl:copyTexImage1D/7} , and {@link gl:copyTexImage2D/8} . The initial value is 0. -%% -%% `?GL_TEXTURE_COMPRESSED': `Params' returns a single boolean value indicating -%% if the texture image is stored in a compressed internal format. The initiali value is `?GL_FALSE' -%% . -%% -%% `?GL_TEXTURE_COMPRESSED_IMAGE_SIZE': `Params' returns a single integer value, -%% the number of unsigned bytes of the compressed texture image that would be returned from {@link gl:getCompressedTexImage/3} -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetTexLevelParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetTexLevelParameter.xhtml">external</a> documentation. -spec getTexLevelParameterfv(Target, Level, Pname) -> {float()} when Target :: enum(),Level :: integer(),Pname :: enum(). getTexLevelParameterfv(Target,Level,Pname) -> call(5264, <<Target:?GLenum,Level:?GLint,Pname:?GLenum>>). @@ -6647,107 +2650,7 @@ getTexLevelParameteriv(Target,Level,Pname) -> %% which texturing is enabled. To enable and disable one-dimensional texturing, call {@link gl:enable/1} %% and {@link gl:enable/1} with argument `?GL_TEXTURE_1D'. %% -%% Texture images are defined with ``gl:texImage1D''. The arguments describe the parameters -%% of the texture image, such as width, width of the border, level-of-detail number (see {@link gl:texParameterf/3} -%% ), and the internal resolution and format used to store the image. The last three arguments -%% describe how the image is represented in memory. -%% -%% If `Target' is `?GL_PROXY_TEXTURE_1D', no data is read from `Data' , but -%% all of the texture image state is recalculated, checked for consistency, and checked against -%% the implementation's capabilities. If the implementation cannot handle a texture of the -%% requested texture size, it sets all of the image state to 0, but does not generate an -%% error (see {@link gl:getError/0} ). To query for an entire mipmap array, use an image array -%% level greater than or equal to 1. -%% -%% If `Target' is `?GL_TEXTURE_1D', data is read from `Data' as a sequence -%% of signed or unsigned bytes, shorts, or longs, or single-precision floating-point values, -%% depending on `Type' . These values are grouped into sets of one, two, three, or four -%% values, depending on `Format' , to form elements. Each data byte is treated as eight -%% 1-bit elements, with bit ordering determined by `?GL_UNPACK_LSB_FIRST' (see {@link gl:pixelStoref/2} -%% ). -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% The first element corresponds to the left end of the texture array. Subsequent elements -%% progress left-to-right through the remaining texels in the texture array. The final element -%% corresponds to the right end of the texture array. -%% -%% `Format' determines the composition of each element in `Data' . It can assume -%% one of these symbolic values: -%% -%% `?GL_RED': Each element is a single red component. The GL converts it to floating -%% point and assembles it into an RGBA element by attaching 0 for green and blue, and 1 for -%% alpha. Each component is then multiplied by the signed scale factor `?GL_c_SCALE', -%% added to the signed bias `?GL_c_BIAS', and clamped to the range [0,1]. -%% -%% `?GL_RG': Each element is a single red/green double The GL converts it to floating -%% point and assembles it into an RGBA element by attaching 0 for blue, and 1 for alpha. -%% Each component is then multiplied by the signed scale factor `?GL_c_SCALE', added -%% to the signed bias `?GL_c_BIAS', and clamped to the range [0,1]. -%% -%% `?GL_RGB' -%% -%% `?GL_BGR': Each element is an RGB triple. The GL converts it to floating point and -%% assembles it into an RGBA element by attaching 1 for alpha. Each component is then multiplied -%% by the signed scale factor `?GL_c_SCALE', added to the signed bias `?GL_c_BIAS', -%% and clamped to the range [0,1]. -%% -%% `?GL_RGBA' -%% -%% `?GL_BGRA': Each element contains all four components. Each component is multiplied -%% by the signed scale factor `?GL_c_SCALE', added to the signed bias `?GL_c_BIAS', -%% and clamped to the range [0,1]. -%% -%% `?GL_DEPTH_COMPONENT': Each element is a single depth value. The GL converts it -%% to floating point, multiplies by the signed scale factor `?GL_DEPTH_SCALE', adds -%% the signed bias `?GL_DEPTH_BIAS', and clamps to the range [0,1]. -%% -%% If an application wants to store the texture at a certain resolution or in a certain -%% format, it can request the resolution and format with `InternalFormat' . The GL will -%% choose an internal representation that closely approximates that requested by `InternalFormat' -%% , but it may not match exactly. (The representations specified by `?GL_RED', `?GL_RG' -%% , `?GL_RGB' and `?GL_RGBA' must match exactly.) -%% -%% `InternalFormat' may be one of the base internal formats shown in Table 1, below -%% -%% `InternalFormat' may also be one of the sized internal formats shown in Table 2, -%% below -%% -%% Finally, `InternalFormat' may also be one of the generic or compressed compressed -%% texture formats shown in Table 3 below -%% -%% If the `InternalFormat' parameter is one of the generic compressed formats, `?GL_COMPRESSED_RED' -%% , `?GL_COMPRESSED_RG', `?GL_COMPRESSED_RGB', or `?GL_COMPRESSED_RGBA', -%% the GL will replace the internal format with the symbolic constant for a specific internal -%% format and compress the texture before storage. If no corresponding internal format is -%% available, or the GL can not compress that image for any reason, the internal format is -%% instead replaced with a corresponding base internal format. -%% -%% If the `InternalFormat' parameter is `?GL_SRGB', `?GL_SRGB8', `?GL_SRGB_ALPHA' -%% or `?GL_SRGB8_ALPHA8', the texture is treated as if the red, green, or blue components -%% are encoded in the sRGB color space. Any alpha component is left unchanged. The conversion -%% from the sRGB encoded component c s to a linear component c l is: -%% -%% c l={ c s/12.92if c s&le; 0.04045( c s+0.055/1.055) 2.4if c s> 0.04045 -%% -%% Assume c s is the sRGB component in the range [0,1]. -%% -%% Use the `?GL_PROXY_TEXTURE_1D' target to try out a resolution and format. The implementation -%% will update and recompute its best match for the requested storage resolution and format. -%% To then query this state, call {@link gl:getTexLevelParameterfv/3} . If the texture cannot -%% be accommodated, texture state is set to 0. -%% -%% A one-component texture image uses only the red component of the RGBA color from `Data' -%% . A two-component image uses the R and A values. A three-component image uses the R, G, -%% and B values. A four-component image uses all of the RGBA components. -%% -%% Image-based shadowing can be enabled by comparing texture r coordinates to depth texture -%% values to generate a boolean result. See {@link gl:texParameterf/3} for details on texture -%% comparison. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexImage1D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexImage1D.xhtml">external</a> documentation. -spec texImage1D(Target, Level, InternalFormat, Width, Border, Format, Type, Pixels) -> 'ok' when Target :: enum(),Level :: integer(),InternalFormat :: integer(),Width :: integer(),Border :: integer(),Format :: enum(),Type :: enum(),Pixels :: offset()|mem(). texImage1D(Target,Level,InternalFormat,Width,Border,Format,Type,Pixels) when is_integer(Pixels) -> cast(5266, <<Target:?GLenum,Level:?GLint,InternalFormat:?GLint,Width:?GLsizei,Border:?GLint,Format:?GLenum,Type:?GLenum,Pixels:?GLuint>>); @@ -6759,117 +2662,7 @@ texImage1D(Target,Level,InternalFormat,Width,Border,Format,Type,Pixels) -> %% %% Texturing allows elements of an image array to be read by shaders. %% -%% To define texture images, call ``gl:texImage2D''. The arguments describe the parameters -%% of the texture image, such as height, width, width of the border, level-of-detail number -%% (see {@link gl:texParameterf/3} ), and number of color components provided. The last three -%% arguments describe how the image is represented in memory. -%% -%% If `Target' is `?GL_PROXY_TEXTURE_2D', `?GL_PROXY_TEXTURE_1D_ARRAY', `?GL_PROXY_TEXTURE_CUBE_MAP' -%% , or `?GL_PROXY_TEXTURE_RECTANGLE', no data is read from `Data' , but all of -%% the texture image state is recalculated, checked for consistency, and checked against -%% the implementation's capabilities. If the implementation cannot handle a texture of the -%% requested texture size, it sets all of the image state to 0, but does not generate an -%% error (see {@link gl:getError/0} ). To query for an entire mipmap array, use an image array -%% level greater than or equal to 1. -%% -%% If `Target' is `?GL_TEXTURE_2D', `?GL_TEXTURE_RECTANGLE' or one of the `?GL_TEXTURE_CUBE_MAP' -%% targets, data is read from `Data' as a sequence of signed or unsigned bytes, shorts, -%% or longs, or single-precision floating-point values, depending on `Type' . These values -%% are grouped into sets of one, two, three, or four values, depending on `Format' , -%% to form elements. Each data byte is treated as eight 1-bit elements, with bit ordering -%% determined by `?GL_UNPACK_LSB_FIRST' (see {@link gl:pixelStoref/2} ). -%% -%% If `Target' is `?GL_TEXTURE_1D_ARRAY', data is interpreted as an array of one-dimensional -%% images. -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% The first element corresponds to the lower left corner of the texture image. Subsequent -%% elements progress left-to-right through the remaining texels in the lowest row of the -%% texture image, and then in successively higher rows of the texture image. The final element -%% corresponds to the upper right corner of the texture image. -%% -%% `Format' determines the composition of each element in `Data' . It can assume -%% one of these symbolic values: -%% -%% `?GL_RED': Each element is a single red component. The GL converts it to floating -%% point and assembles it into an RGBA element by attaching 0 for green and blue, and 1 for -%% alpha. Each component is then multiplied by the signed scale factor `?GL_c_SCALE', -%% added to the signed bias `?GL_c_BIAS', and clamped to the range [0,1]. -%% -%% `?GL_RG': Each element is a red/green double. The GL converts it to floating point -%% and assembles it into an RGBA element by attaching 0 for blue, and 1 for alpha. Each component -%% is then multiplied by the signed scale factor `?GL_c_SCALE', added to the signed -%% bias `?GL_c_BIAS', and clamped to the range [0,1]. -%% -%% `?GL_RGB' -%% -%% `?GL_BGR': Each element is an RGB triple. The GL converts it to floating point and -%% assembles it into an RGBA element by attaching 1 for alpha. Each component is then multiplied -%% by the signed scale factor `?GL_c_SCALE', added to the signed bias `?GL_c_BIAS', -%% and clamped to the range [0,1]. -%% -%% `?GL_RGBA' -%% -%% `?GL_BGRA': Each element contains all four components. Each component is multiplied -%% by the signed scale factor `?GL_c_SCALE', added to the signed bias `?GL_c_BIAS', -%% and clamped to the range [0,1]. -%% -%% `?GL_DEPTH_COMPONENT': Each element is a single depth value. The GL converts it -%% to floating point, multiplies by the signed scale factor `?GL_DEPTH_SCALE', adds -%% the signed bias `?GL_DEPTH_BIAS', and clamps to the range [0,1]. -%% -%% `?GL_DEPTH_STENCIL': Each element is a pair of depth and stencil values. The depth -%% component of the pair is interpreted as in `?GL_DEPTH_COMPONENT'. The stencil component -%% is interpreted based on specified the depth + stencil internal format. -%% -%% If an application wants to store the texture at a certain resolution or in a certain -%% format, it can request the resolution and format with `InternalFormat' . The GL will -%% choose an internal representation that closely approximates that requested by `InternalFormat' -%% , but it may not match exactly. (The representations specified by `?GL_RED', `?GL_RG' -%% , `?GL_RGB', and `?GL_RGBA' must match exactly.) -%% -%% `InternalFormat' may be one of the base internal formats shown in Table 1, below -%% -%% `InternalFormat' may also be one of the sized internal formats shown in Table 2, -%% below -%% -%% Finally, `InternalFormat' may also be one of the generic or compressed compressed -%% texture formats shown in Table 3 below -%% -%% If the `InternalFormat' parameter is one of the generic compressed formats, `?GL_COMPRESSED_RED' -%% , `?GL_COMPRESSED_RG', `?GL_COMPRESSED_RGB', or `?GL_COMPRESSED_RGBA', -%% the GL will replace the internal format with the symbolic constant for a specific internal -%% format and compress the texture before storage. If no corresponding internal format is -%% available, or the GL can not compress that image for any reason, the internal format is -%% instead replaced with a corresponding base internal format. -%% -%% If the `InternalFormat' parameter is `?GL_SRGB', `?GL_SRGB8', `?GL_SRGB_ALPHA' -%% , or `?GL_SRGB8_ALPHA8', the texture is treated as if the red, green, or blue components -%% are encoded in the sRGB color space. Any alpha component is left unchanged. The conversion -%% from the sRGB encoded component c s to a linear component c l is: -%% -%% c l={ c s/12.92if c s&le; 0.04045( c s+0.055/1.055) 2.4if c s> 0.04045 -%% -%% Assume c s is the sRGB component in the range [0,1]. -%% -%% Use the `?GL_PROXY_TEXTURE_2D', `?GL_PROXY_TEXTURE_1D_ARRAY', `?GL_PROXY_TEXTURE_RECTANGLE' -%% , or `?GL_PROXY_TEXTURE_CUBE_MAP' target to try out a resolution and format. The -%% implementation will update and recompute its best match for the requested storage resolution -%% and format. To then query this state, call {@link gl:getTexLevelParameterfv/3} . If the texture -%% cannot be accommodated, texture state is set to 0. -%% -%% A one-component texture image uses only the red component of the RGBA color extracted -%% from `Data' . A two-component image uses the R and G values. A three-component image -%% uses the R, G, and B values. A four-component image uses all of the RGBA components. -%% -%% Image-based shadowing can be enabled by comparing texture r coordinates to depth texture -%% values to generate a boolean result. See {@link gl:texParameterf/3} for details on texture -%% comparison. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml">external</a> documentation. -spec texImage2D(Target, Level, InternalFormat, Width, Height, Border, Format, Type, Pixels) -> 'ok' when Target :: enum(),Level :: integer(),InternalFormat :: integer(),Width :: integer(),Height :: integer(),Border :: integer(),Format :: enum(),Type :: enum(),Pixels :: offset()|mem(). texImage2D(Target,Level,InternalFormat,Width,Height,Border,Format,Type,Pixels) when is_integer(Pixels) -> cast(5268, <<Target:?GLenum,Level:?GLint,InternalFormat:?GLint,Width:?GLsizei,Height:?GLsizei,Border:?GLint,Format:?GLenum,Type:?GLenum,Pixels:?GLuint>>); @@ -6888,33 +2681,7 @@ texImage2D(Target,Level,InternalFormat,Width,Height,Border,Format,Type,Pixels) - %% array. See the reference page for {@link gl:texImage1D/8} for a description of the acceptable %% values for the `Format' and `Type' parameters, respectively. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is requested, `Img' is treated -%% as a byte offset into the buffer object's data store. -%% -%% To understand the operation of ``gl:getTexImage'', consider the selected internal four-component -%% texture image to be an RGBA color buffer the size of the image. The semantics of ``gl:getTexImage'' -%% are then identical to those of {@link gl:readPixels/7} , with the exception that no pixel -%% transfer operations are performed, when called with the same `Format' and `Type' , -%% with `x' and `y' set to 0, `width' set to the width of the texture image -%% and `height' set to 1 for 1D images, or to the height of the texture image for 2D -%% images. -%% -%% If the selected texture image does not contain four components, the following mappings -%% are applied. Single-component textures are treated as RGBA buffers with red set to the -%% single-component value, green set to 0, blue set to 0, and alpha set to 1. Two-component -%% textures are treated as RGBA buffers with red set to the value of component zero, alpha -%% set to the value of component one, and green and blue set to 0. Finally, three-component -%% textures are treated as RGBA buffers with red set to component zero, green set to component -%% one, blue set to component two, and alpha set to 1. -%% -%% To determine the required size of `Img' , use {@link gl:getTexLevelParameterfv/3} to -%% determine the dimensions of the internal texture image, then scale the required number -%% of pixels by the storage required for each pixel, based on `Format' and `Type' . -%% Be sure to take the pixel storage parameters into account, especially `?GL_PACK_ALIGNMENT' -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetTexImage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml">external</a> documentation. -spec getTexImage(Target, Level, Format, Type, Pixels) -> 'ok' when Target :: enum(),Level :: integer(),Format :: enum(),Type :: enum(),Pixels :: mem(). getTexImage(Target,Level,Format,Type,Pixels) -> send_bin(Pixels), @@ -6926,13 +2693,7 @@ getTexImage(Target,Level,Format,Type,Pixels) -> %% that the names form a contiguous set of integers; however, it is guaranteed that none %% of the returned names was in use immediately before the call to ``gl:genTextures''. %% -%% The generated textures have no dimensionality; they assume the dimensionality of the -%% texture target to which they are first bound (see {@link gl:bindTexture/2} ). -%% -%% Texture names returned by a call to ``gl:genTextures'' are not returned by subsequent -%% calls, unless they are first deleted with {@link gl:deleteTextures/1} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenTextures.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenTextures.xhtml">external</a> documentation. -spec genTextures(N) -> [integer()] when N :: integer(). genTextures(N) -> call(5271, <<N:?GLsizei>>). @@ -6944,10 +2705,7 @@ genTextures(N) -> %% for reuse (for example by {@link gl:genTextures/1} ). If a texture that is currently bound %% is deleted, the binding reverts to 0 (the default texture). %% -%% ``gl:deleteTextures'' silently ignores 0's and names that do not correspond to existing -%% textures. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteTextures.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteTextures.xhtml">external</a> documentation. -spec deleteTextures(Textures) -> 'ok' when Textures :: [integer()]. deleteTextures(Textures) -> TexturesLen = length(Textures), @@ -6964,43 +2722,7 @@ deleteTextures(Textures) -> %% When a texture is bound to a target, the previous binding for that target is automatically %% broken. %% -%% Texture names are unsigned integers. The value zero is reserved to represent the default -%% texture for each texture target. Texture names and the corresponding texture contents -%% are local to the shared object space of the current GL rendering context; two rendering -%% contexts share texture names only if they explicitly enable sharing between contexts through -%% the appropriate GL windows interfaces functions. -%% -%% You must use {@link gl:genTextures/1} to generate a set of new texture names. -%% -%% When a texture is first bound, it assumes the specified target: A texture first bound -%% to `?GL_TEXTURE_1D' becomes one-dimensional texture, a texture first bound to `?GL_TEXTURE_2D' -%% becomes two-dimensional texture, a texture first bound to `?GL_TEXTURE_3D' becomes -%% three-dimensional texture, a texture first bound to `?GL_TEXTURE_1D_ARRAY' becomes -%% one-dimensional array texture, a texture first bound to `?GL_TEXTURE_2D_ARRAY' becomes -%% two-dimensional arary texture, a texture first bound to `?GL_TEXTURE_RECTANGLE' becomes -%% rectangle texture, a, texture first bound to `?GL_TEXTURE_CUBE_MAP' becomes a cube-mapped -%% texture, a texture first bound to `?GL_TEXTURE_2D_MULTISAMPLE' becomes a two-dimensional -%% multisampled texture, and a texture first bound to `?GL_TEXTURE_2D_MULTISAMPLE_ARRAY' -%% becomes a two-dimensional multisampled array texture. The state of a one-dimensional texture -%% immediately after it is first bound is equivalent to the state of the default `?GL_TEXTURE_1D' -%% at GL initialization, and similarly for the other texture types. -%% -%% While a texture is bound, GL operations on the target to which it is bound affect the -%% bound texture, and queries of the target to which it is bound return state from the bound -%% texture. In effect, the texture targets become aliases for the textures currently bound -%% to them, and the texture name zero refers to the default textures that were bound to them -%% at initialization. -%% -%% A texture binding created with ``gl:bindTexture'' remains active until a different -%% texture is bound to the same target, or until the bound texture is deleted with {@link gl:deleteTextures/1} -%% . -%% -%% Once created, a named texture may be re-bound to its same original target as often as -%% needed. It is usually much faster to use ``gl:bindTexture'' to bind an existing named -%% texture to one of the texture targets than it is to reload the texture image using {@link gl:texImage1D/8} -%% , {@link gl:texImage2D/9} , {@link gl:texImage3D/10} or another similar function. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindTexture.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindTexture.xhtml">external</a> documentation. -spec bindTexture(Target, Texture) -> 'ok' when Target :: enum(),Texture :: integer(). bindTexture(Target,Texture) -> cast(5273, <<Target:?GLenum,Texture:?GLuint>>). @@ -7010,26 +2732,7 @@ bindTexture(Target,Texture) -> %% ``gl:prioritizeTextures'' assigns the `N' texture priorities given in `Priorities' %% to the `N' textures named in `Textures' . %% -%% The GL establishes a ``working set'' of textures that are resident in texture memory. -%% These textures may be bound to a texture target much more efficiently than textures that -%% are not resident. By specifying a priority for each texture, ``gl:prioritizeTextures'' -%% allows applications to guide the GL implementation in determining which textures should -%% be resident. -%% -%% The priorities given in `Priorities' are clamped to the range [0 1] before they are -%% assigned. 0 indicates the lowest priority; textures with priority 0 are least likely to -%% be resident. 1 indicates the highest priority; textures with priority 1 are most likely -%% to be resident. However, textures are not guaranteed to be resident until they are used. -%% -%% ``gl:prioritizeTextures'' silently ignores attempts to prioritize texture 0 or any texture -%% name that does not correspond to an existing texture. -%% -%% ``gl:prioritizeTextures'' does not require that any of the textures named by `Textures' -%% be bound to a texture target. {@link gl:texParameterf/3} may also be used to set a texture's -%% priority, but only if the texture is currently bound. This is the only way to set the -%% priority of a default texture. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPrioritizeTextures.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPrioritizeTextures.xml">external</a> documentation. -spec prioritizeTextures(Textures, Priorities) -> 'ok' when Textures :: [integer()],Priorities :: [clamp()]. prioritizeTextures(Textures,Priorities) -> TexturesLen = length(Textures), @@ -7044,20 +2747,7 @@ prioritizeTextures(Textures,Priorities) -> %% textures can be bound to a texture target much more efficiently than textures that are %% not resident. %% -%% ``gl:areTexturesResident'' queries the texture residence status of the `N' textures -%% named by the elements of `Textures' . If all the named textures are resident, ``gl:areTexturesResident'' -%% returns `?GL_TRUE', and the contents of `Residences' are undisturbed. If not -%% all the named textures are resident, ``gl:areTexturesResident'' returns `?GL_FALSE', -%% and detailed status is returned in the `N' elements of `Residences' . If an element -%% of `Residences' is `?GL_TRUE', then the texture named by the corresponding element -%% of `Textures' is resident. -%% -%% The residence status of a single bound texture may also be queried by calling {@link gl:getTexParameterfv/2} -%% with the `target' argument set to the target to which the texture is bound, and -%% the `pname' argument set to `?GL_TEXTURE_RESIDENT'. This is the only way that -%% the residence status of a default texture can be queried. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glAreTexturesResident.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glAreTexturesResident.xml">external</a> documentation. -spec areTexturesResident(Textures) -> {0|1,Residences :: [0|1]} when Textures :: [integer()]. areTexturesResident(Textures) -> TexturesLen = length(Textures), @@ -7070,17 +2760,14 @@ areTexturesResident(Textures) -> %% a texture. If `Texture' is zero, or is a non-zero value that is not currently the %% name of a texture, or if an error occurs, ``gl:isTexture'' returns `?GL_FALSE'. %% -%% A name returned by {@link gl:genTextures/1} , but not yet associated with a texture by -%% calling {@link gl:bindTexture/2} , is not the name of a texture. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsTexture.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsTexture.xhtml">external</a> documentation. -spec isTexture(Texture) -> 0|1 when Texture :: integer(). isTexture(Texture) -> call(5276, <<Texture:?GLuint>>). %% @doc glTexSubImage %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexSubImage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec texSubImage1D(Target, Level, Xoffset, Width, Format, Type, Pixels) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),Width :: integer(),Format :: enum(),Type :: enum(),Pixels :: offset()|mem(). texSubImage1D(Target,Level,Xoffset,Width,Format,Type,Pixels) when is_integer(Pixels) -> cast(5277, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,Width:?GLsizei,Format:?GLenum,Type:?GLenum,Pixels:?GLuint>>); @@ -7090,7 +2777,7 @@ texSubImage1D(Target,Level,Xoffset,Width,Format,Type,Pixels) -> %% @doc glTexSubImage %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexSubImage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec texSubImage2D(Target, Level, Xoffset, Yoffset, Width, Height, Format, Type, Pixels) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),Yoffset :: integer(),Width :: integer(),Height :: integer(),Format :: enum(),Type :: enum(),Pixels :: offset()|mem(). texSubImage2D(Target,Level,Xoffset,Yoffset,Width,Height,Format,Type,Pixels) when is_integer(Pixels) -> cast(5279, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,Yoffset:?GLint,Width:?GLsizei,Height:?GLsizei,Format:?GLenum,Type:?GLenum,Pixels:?GLuint>>); @@ -7103,30 +2790,7 @@ texSubImage2D(Target,Level,Xoffset,Yoffset,Width,Height,Format,Type,Pixels) -> %% ``gl:copyTexImage1D'' defines a one-dimensional texture image with pixels from the current %% `?GL_READ_BUFFER'. %% -%% The screen-aligned pixel row with left corner at (x y) and with a length of width+2(border) defines -%% the texture array at the mipmap level specified by `Level' . `Internalformat' -%% specifies the internal format of the texture array. -%% -%% The pixels in the row are processed exactly as if {@link gl:readPixels/7} had been called, -%% but the process stops just before final conversion. At this point all pixel component -%% values are clamped to the range [0 1] and then converted to the texture's internal format -%% for storage in the texel array. -%% -%% Pixel ordering is such that lower x screen coordinates correspond to lower texture -%% coordinates. -%% -%% If any of the pixels within the specified row of the current `?GL_READ_BUFFER' are -%% outside the window associated with the current rendering context, then the values obtained -%% for those pixels are undefined. -%% -%% ``gl:copyTexImage1D'' defines a one-dimensional texture image with pixels from the current -%% `?GL_READ_BUFFER'. -%% -%% When `Internalformat' is one of the sRGB types, the GL does not automatically convert -%% the source pixels to the sRGB color space. In this case, the ``gl:pixelMap'' function -%% can be used to accomplish the conversion. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyTexImage1D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCopyTexImage1D.xhtml">external</a> documentation. -spec copyTexImage1D(Target, Level, Internalformat, X, Y, Width, Border) -> 'ok' when Target :: enum(),Level :: integer(),Internalformat :: enum(),X :: integer(),Y :: integer(),Width :: integer(),Border :: integer(). copyTexImage1D(Target,Level,Internalformat,X,Y,Width,Border) -> cast(5281, <<Target:?GLenum,Level:?GLint,Internalformat:?GLenum,X:?GLint,Y:?GLint,Width:?GLsizei,Border:?GLint>>). @@ -7136,28 +2800,7 @@ copyTexImage1D(Target,Level,Internalformat,X,Y,Width,Border) -> %% ``gl:copyTexImage2D'' defines a two-dimensional texture image, or cube-map texture image %% with pixels from the current `?GL_READ_BUFFER'. %% -%% The screen-aligned pixel rectangle with lower left corner at ( `X' , `Y' ) and -%% with a width of width+2(border) and a height of height+2(border) defines the texture array at the mipmap -%% level specified by `Level' . `Internalformat' specifies the internal format of -%% the texture array. -%% -%% The pixels in the rectangle are processed exactly as if {@link gl:readPixels/7} had been -%% called, but the process stops just before final conversion. At this point all pixel component -%% values are clamped to the range [0 1] and then converted to the texture's internal format -%% for storage in the texel array. -%% -%% Pixel ordering is such that lower x and y screen coordinates correspond to lower s -%% and t texture coordinates. -%% -%% If any of the pixels within the specified rectangle of the current `?GL_READ_BUFFER' -%% are outside the window associated with the current rendering context, then the values -%% obtained for those pixels are undefined. -%% -%% When `Internalformat' is one of the sRGB types, the GL does not automatically convert -%% the source pixels to the sRGB color space. In this case, the ``gl:pixelMap'' function -%% can be used to accomplish the conversion. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyTexImage2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCopyTexImage2D.xhtml">external</a> documentation. -spec copyTexImage2D(Target, Level, Internalformat, X, Y, Width, Height, Border) -> 'ok' when Target :: enum(),Level :: integer(),Internalformat :: enum(),X :: integer(),Y :: integer(),Width :: integer(),Height :: integer(),Border :: integer(). copyTexImage2D(Target,Level,Internalformat,X,Y,Width,Height,Border) -> cast(5282, <<Target:?GLenum,Level:?GLint,Internalformat:?GLenum,X:?GLint,Y:?GLint,Width:?GLsizei,Height:?GLsizei,Border:?GLint>>). @@ -7168,25 +2811,7 @@ copyTexImage2D(Target,Level,Internalformat,X,Y,Width,Height,Border) -> %% pixels from the current `?GL_READ_BUFFER' (rather than from main memory, as is the %% case for {@link gl:texSubImage1D/7} ). %% -%% The screen-aligned pixel row with left corner at ( `X' , `Y' ), and with length `Width' -%% replaces the portion of the texture array with x indices `Xoffset' through xoffset -%% +width-1, inclusive. The destination in the texture array may not include any texels outside -%% the texture array as it was originally specified. -%% -%% The pixels in the row are processed exactly as if {@link gl:readPixels/7} had been called, -%% but the process stops just before final conversion. At this point, all pixel component -%% values are clamped to the range [0 1] and then converted to the texture's internal format -%% for storage in the texel array. -%% -%% It is not an error to specify a subtexture with zero width, but such a specification -%% has no effect. If any of the pixels within the specified row of the current `?GL_READ_BUFFER' -%% are outside the read window associated with the current rendering context, then the values -%% obtained for those pixels are undefined. -%% -%% No change is made to the `internalformat', `width', or `border' parameters -%% of the specified texture array or to texel values outside the specified subregion. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyTexSubImage1D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCopyTexSubImage1D.xhtml">external</a> documentation. -spec copyTexSubImage1D(Target, Level, Xoffset, X, Y, Width) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),X :: integer(),Y :: integer(),Width :: integer(). copyTexSubImage1D(Target,Level,Xoffset,X,Y,Width) -> cast(5283, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,X:?GLint,Y:?GLint,Width:?GLsizei>>). @@ -7197,36 +2822,14 @@ copyTexSubImage1D(Target,Level,Xoffset,X,Y,Width) -> %% image or cube-map texture image with pixels from the current `?GL_READ_BUFFER' (rather %% than from main memory, as is the case for {@link gl:texSubImage1D/7} ). %% -%% The screen-aligned pixel rectangle with lower left corner at (x y) and with width `Width' -%% and height `Height' replaces the portion of the texture array with x indices `Xoffset' -%% through xoffset+width-1, inclusive, and y indices `Yoffset' through yoffset+height -%% -1, inclusive, at the mipmap level specified by `Level' . -%% -%% The pixels in the rectangle are processed exactly as if {@link gl:readPixels/7} had been -%% called, but the process stops just before final conversion. At this point, all pixel component -%% values are clamped to the range [0 1] and then converted to the texture's internal format -%% for storage in the texel array. -%% -%% The destination rectangle in the texture array may not include any texels outside the -%% texture array as it was originally specified. It is not an error to specify a subtexture -%% with zero width or height, but such a specification has no effect. -%% -%% If any of the pixels within the specified rectangle of the current `?GL_READ_BUFFER' -%% are outside the read window associated with the current rendering context, then the values -%% obtained for those pixels are undefined. -%% -%% No change is made to the `internalformat', `width', `height', or `border' -%% parameters of the specified texture array or to texel values outside the specified subregion. -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyTexSubImage2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCopyTexSubImage2D.xhtml">external</a> documentation. -spec copyTexSubImage2D(Target, Level, Xoffset, Yoffset, X, Y, Width, Height) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),Yoffset :: integer(),X :: integer(),Y :: integer(),Width :: integer(),Height :: integer(). copyTexSubImage2D(Target,Level,Xoffset,Yoffset,X,Y,Width,Height) -> cast(5284, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,Yoffset:?GLint,X:?GLint,Y:?GLint,Width:?GLsizei,Height:?GLsizei>>). %% @doc glMap %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec map1d(Target, U1, U2, Stride, Order, Points) -> 'ok' when Target :: enum(),U1 :: float(),U2 :: float(),Stride :: integer(),Order :: integer(),Points :: binary(). map1d(Target,U1,U2,Stride,Order,Points) -> send_bin(Points), @@ -7234,7 +2837,7 @@ map1d(Target,U1,U2,Stride,Order,Points) -> %% @doc glMap %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec map1f(Target, U1, U2, Stride, Order, Points) -> 'ok' when Target :: enum(),U1 :: float(),U2 :: float(),Stride :: integer(),Order :: integer(),Points :: binary(). map1f(Target,U1,U2,Stride,Order,Points) -> send_bin(Points), @@ -7242,7 +2845,7 @@ map1f(Target,U1,U2,Stride,Order,Points) -> %% @doc glMap %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec map2d(Target, U1, U2, Ustride, Uorder, V1, V2, Vstride, Vorder, Points) -> 'ok' when Target :: enum(),U1 :: float(),U2 :: float(),Ustride :: integer(),Uorder :: integer(),V1 :: float(),V2 :: float(),Vstride :: integer(),Vorder :: integer(),Points :: binary(). map2d(Target,U1,U2,Ustride,Uorder,V1,V2,Vstride,Vorder,Points) -> send_bin(Points), @@ -7250,7 +2853,7 @@ map2d(Target,U1,U2,Ustride,Uorder,V1,V2,Vstride,Vorder,Points) -> %% @doc glMap %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec map2f(Target, U1, U2, Ustride, Uorder, V1, V2, Vstride, Vorder, Points) -> 'ok' when Target :: enum(),U1 :: float(),U2 :: float(),Ustride :: integer(),Uorder :: integer(),V1 :: float(),V2 :: float(),Vstride :: integer(),Vorder :: integer(),Points :: binary(). map2f(Target,U1,U2,Ustride,Uorder,V1,V2,Vstride,Vorder,Points) -> send_bin(Points), @@ -7262,31 +2865,7 @@ map2f(Target,U1,U2,Ustride,Uorder,V1,V2,Vstride,Vorder,Points) -> %% parameters. `Target' chooses a map, `Query' selects a specific parameter, and `V' %% points to storage where the values will be returned. %% -%% The acceptable values for the `Target' parameter are described in the {@link gl:map1d/6} -%% and {@link gl:map1d/6} reference pages. -%% -%% `Query' can assume the following values: -%% -%% `?GL_COEFF': `V' returns the control points for the evaluator function. One-dimensional -%% evaluators return order control points, and two-dimensional evaluators return uorder×vorder -%% control points. Each control point consists of one, two, three, or four integer, single-precision -%% floating-point, or double-precision floating-point values, depending on the type of the -%% evaluator. The GL returns two-dimensional control points in row-major order, incrementing -%% the uorder index quickly and the vorder index after each row. Integer values, when -%% requested, are computed by rounding the internal floating-point values to the nearest -%% integer values. -%% -%% `?GL_ORDER': `V' returns the order of the evaluator function. One-dimensional -%% evaluators return a single value, order. The initial value is 1. Two-dimensional evaluators -%% return two values, uorder and vorder. The initial value is 1,1. -%% -%% `?GL_DOMAIN': `V' returns the linear u and v mapping parameters. One-dimensional -%% evaluators return two values, u1 and u2, as specified by {@link gl:map1d/6} . Two-dimensional -%% evaluators return four values ( u1, u2, v1, and v2) as specified by {@link gl:map1d/6} . -%% Integer values, when requested, are computed by rounding the internal floating-point values -%% to the nearest integer values. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetMap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetMap.xml">external</a> documentation. -spec getMapdv(Target, Query, V) -> 'ok' when Target :: enum(),Query :: enum(),V :: mem(). getMapdv(Target,Query,V) -> send_bin(V), @@ -7313,45 +2892,7 @@ getMapiv(Target,Query,V) -> %% To define a map, call {@link gl:map1d/6} and {@link gl:map1d/6} ; to enable and disable it, %% call {@link gl:enable/1} and {@link gl:enable/1} . %% -%% When one of the ``gl:evalCoord'' commands is issued, all currently enabled maps of -%% the indicated dimension are evaluated. Then, for each enabled map, it is as if the corresponding -%% GL command had been issued with the computed value. That is, if `?GL_MAP1_INDEX' or `?GL_MAP2_INDEX' -%% is enabled, a {@link gl:indexd/1} command is simulated. If `?GL_MAP1_COLOR_4' or `?GL_MAP2_COLOR_4' -%% is enabled, a {@link gl:color3b/3} command is simulated. If `?GL_MAP1_NORMAL' or `?GL_MAP2_NORMAL' -%% is enabled, a normal vector is produced, and if any of `?GL_MAP1_TEXTURE_COORD_1', `?GL_MAP1_TEXTURE_COORD_2' -%% , `?GL_MAP1_TEXTURE_COORD_3', `?GL_MAP1_TEXTURE_COORD_4', `?GL_MAP2_TEXTURE_COORD_1' -%% , `?GL_MAP2_TEXTURE_COORD_2', `?GL_MAP2_TEXTURE_COORD_3', or `?GL_MAP2_TEXTURE_COORD_4' -%% is enabled, then an appropriate {@link gl:texCoord1d/1} command is simulated. -%% -%% For color, color index, normal, and texture coordinates the GL uses evaluated values -%% instead of current values for those evaluations that are enabled, and current values otherwise, -%% However, the evaluated values do not update the current values. Thus, if {@link gl:vertex2d/2} -%% commands are interspersed with ``gl:evalCoord'' commands, the color, normal, and texture -%% coordinates associated with the {@link gl:vertex2d/2} commands are not affected by the values -%% generated by the ``gl:evalCoord'' commands, but only by the most recent {@link gl:color3b/3} -%% , {@link gl:indexd/1} , {@link gl:normal3b/3} , and {@link gl:texCoord1d/1} commands. -%% -%% No commands are issued for maps that are not enabled. If more than one texture evaluation -%% is enabled for a particular dimension (for example, `?GL_MAP2_TEXTURE_COORD_1' and `?GL_MAP2_TEXTURE_COORD_2' -%% ), then only the evaluation of the map that produces the larger number of coordinates -%% (in this case, `?GL_MAP2_TEXTURE_COORD_2') is carried out. `?GL_MAP1_VERTEX_4' -%% overrides `?GL_MAP1_VERTEX_3', and `?GL_MAP2_VERTEX_4' overrides `?GL_MAP2_VERTEX_3' -%% , in the same manner. If neither a three- nor a four-component vertex map is enabled for -%% the specified dimension, the ``gl:evalCoord'' command is ignored. -%% -%% If you have enabled automatic normal generation, by calling {@link gl:enable/1} with argument -%% `?GL_AUTO_NORMAL', ``gl:evalCoord2'' generates surface normals analytically, regardless -%% of the contents or enabling of the `?GL_MAP2_NORMAL' map. Let -%% -%% m=((&PartialD; p)/(&PartialD; u))×((&PartialD; p)/(&PartialD; v)) -%% -%% Then the generated normal n is n=m/(||m||) -%% -%% If automatic normal generation is disabled, the corresponding normal map `?GL_MAP2_NORMAL' -%% , if enabled, is used to produce a normal. If neither automatic normal generation nor -%% a normal map is enabled, no normal is generated for ``gl:evalCoord2'' commands. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEvalCoord.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEvalCoord.xml">external</a> documentation. -spec evalCoord1d(U) -> 'ok' when U :: float(). evalCoord1d(U) -> cast(5292, <<U:?GLdouble>>). @@ -7397,31 +2938,7 @@ evalCoord2fv({U,V}) -> evalCoord2f(U,V). %% the integer domain of a one- or two-dimensional grid, whose range is the domain of the %% evaluation maps specified by {@link gl:map1d/6} and {@link gl:map1d/6} . %% -%% ``gl:mapGrid1'' and ``gl:mapGrid2'' specify the linear grid mappings between the i -%% (or i and j) integer grid coordinates, to the u (or u and v) floating-point -%% evaluation map coordinates. See {@link gl:map1d/6} and {@link gl:map1d/6} for details of how -%% u and v coordinates are evaluated. -%% -%% ``gl:mapGrid1'' specifies a single linear mapping such that integer grid coordinate -%% 0 maps exactly to `U1' , and integer grid coordinate `Un' maps exactly to `U2' -%% . All other integer grid coordinates i are mapped so that -%% -%% u=i(u2-u1)/un+u1 -%% -%% ``gl:mapGrid2'' specifies two such linear mappings. One maps integer grid coordinate -%% i=0 exactly to `U1' , and integer grid coordinate i=un exactly to `U2' . The -%% other maps integer grid coordinate j=0 exactly to `V1' , and integer grid coordinate -%% j=vn exactly to `V2' . Other integer grid coordinates i and j are mapped such -%% that -%% -%% u=i(u2-u1)/un+u1 -%% -%% v=j(v2-v1)/vn+v1 -%% -%% The mappings specified by ``gl:mapGrid'' are used identically by {@link gl:evalMesh1/3} -%% and {@link gl:evalPoint1/1} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMapGrid.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMapGrid.xml">external</a> documentation. -spec mapGrid1d(Un, U1, U2) -> 'ok' when Un :: integer(),U1 :: float(),U2 :: float(). mapGrid1d(Un,U1,U2) -> cast(5296, <<Un:?GLint,0:32,U1:?GLdouble,U2:?GLdouble>>). @@ -7452,23 +2969,7 @@ mapGrid2f(Un,U1,U2,Vn,V1,V2) -> %% . Calling ``gl:evalPoint1'' is equivalent to calling glEvalCoord1( i.&Delta; u+u %% 1 ); where &Delta; u=(u 2-u 1)/n %% -%% and n, u 1, and u 2 are the arguments to the most recent {@link gl:mapGrid1d/3} command. -%% The one absolute numeric requirement is that if i=n, then the value computed from i.&Delta; -%% u+u 1 is exactly u 2. -%% -%% In the two-dimensional case, ``gl:evalPoint2'', let -%% -%% &Delta; u=(u 2-u 1)/n -%% -%% &Delta; v=(v 2-v 1)/m -%% -%% where n, u 1, u 2, m, v 1, and v 2 are the arguments to the most recent {@link gl:mapGrid1d/3} -%% command. Then the ``gl:evalPoint2'' command is equivalent to calling glEvalCoord2( i. -%% &Delta; u+u 1, j.&Delta; v+v 1 ); The only absolute numeric requirements are -%% that if i=n, then the value computed from i.&Delta; u+u 1 is exactly u 2, and -%% if j=m, then the value computed from j.&Delta; v+v 1 is exactly v 2. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEvalPoint.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEvalPoint.xml">external</a> documentation. -spec evalPoint1(I) -> 'ok' when I :: integer(). evalPoint1(I) -> cast(5300, <<I:?GLint>>). @@ -7487,53 +2988,7 @@ evalPoint2(I,J) -> %% evaluation maps specified by {@link gl:map1d/6} and {@link gl:map1d/6} . `Mode' determines %% whether the resulting vertices are connected as points, lines, or filled polygons. %% -%% In the one-dimensional case, ``gl:evalMesh1'', the mesh is generated as if the following -%% code fragment were executed: -%% -%% glBegin( `Type' ); for ( i = `I1' ; i <= `I2' ; i += 1 ) glEvalCoord1( -%% i.&Delta; u+u 1 ); glEnd(); where -%% -%% &Delta; u=(u 2-u 1)/n -%% -%% and n, u 1, and u 2 are the arguments to the most recent {@link gl:mapGrid1d/3} command. -%% `type' is `?GL_POINTS' if `Mode' is `?GL_POINT', or `?GL_LINES' -%% if `Mode' is `?GL_LINE'. -%% -%% The one absolute numeric requirement is that if i=n, then the value computed from i.&Delta; -%% u+u 1 is exactly u 2. -%% -%% In the two-dimensional case, ``gl:evalMesh2'', let .cp &Delta; u=(u 2-u 1)/n -%% -%% &Delta; v=(v 2-v 1)/m -%% -%% where n, u 1, u 2, m, v 1, and v 2 are the arguments to the most recent {@link gl:mapGrid1d/3} -%% command. Then, if `Mode' is `?GL_FILL', the ``gl:evalMesh2'' command is equivalent -%% to: -%% -%% for ( j = `J1' ; j < `J2' ; j += 1 ) { glBegin( GL_QUAD_STRIP ); for ( i = `I1' -%% ; i <= `I2' ; i += 1 ) { glEvalCoord2( i.&Delta; u+u 1, j.&Delta; v+v 1 -%% ); glEvalCoord2( i.&Delta; u+u 1,(j+1).&Delta; v+v 1 ); } glEnd(); } -%% -%% If `Mode' is `?GL_LINE', then a call to ``gl:evalMesh2'' is equivalent to: -%% -%% for ( j = `J1' ; j <= `J2' ; j += 1 ) { glBegin( GL_LINE_STRIP ); for ( i = `I1' -%% ; i <= `I2' ; i += 1 ) glEvalCoord2( i.&Delta; u+u 1, j.&Delta; v+v 1 -%% ); glEnd(); } for ( i = `I1' ; i <= `I2' ; i += 1 ) { glBegin( GL_LINE_STRIP -%% ); for ( j = `J1' ; j <= `J1' ; j += 1 ) glEvalCoord2( i.&Delta; u+u 1, j. -%% &Delta; v+v 1 ); glEnd(); } -%% -%% And finally, if `Mode' is `?GL_POINT', then a call to ``gl:evalMesh2'' is -%% equivalent to: -%% -%% glBegin( GL_POINTS ); for ( j = `J1' ; j <= `J2' ; j += 1 ) for ( i = `I1' -%% ; i <= `I2' ; i += 1 ) glEvalCoord2( i.&Delta; u+u 1, j.&Delta; v+v 1 -%% ); glEnd(); -%% -%% In all three cases, the only absolute numeric requirements are that if i=n, then the -%% value computed from i.&Delta; u+u 1 is exactly u 2, and if j=m, then the value -%% computed from j.&Delta; v+v 1 is exactly v 2. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEvalMesh.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEvalMesh.xml">external</a> documentation. -spec evalMesh1(Mode, I1, I2) -> 'ok' when Mode :: enum(),I1 :: integer(),I2 :: integer(). evalMesh1(Mode,I1,I2) -> cast(5302, <<Mode:?GLenum,I1:?GLint,I2:?GLint>>). @@ -7550,66 +3005,7 @@ evalMesh2(Mode,I1,I2,J1,J2) -> %% pixel blocks, but not buffer clear operations. To enable and disable fog, call {@link gl:enable/1} %% and {@link gl:enable/1} with argument `?GL_FOG'. %% -%% ``gl:fog'' assigns the value or values in `Params' to the fog parameter specified -%% by `Pname' . The following values are accepted for `Pname' : -%% -%% `?GL_FOG_MODE': `Params' is a single integer or floating-point value that specifies -%% the equation to be used to compute the fog blend factor, f. Three symbolic constants -%% are accepted: `?GL_LINEAR', `?GL_EXP', and `?GL_EXP2'. The equations corresponding -%% to these symbolic constants are defined below. The initial fog mode is `?GL_EXP'. -%% -%% `?GL_FOG_DENSITY': `Params' is a single integer or floating-point value that -%% specifies density, the fog density used in both exponential fog equations. Only nonnegative -%% densities are accepted. The initial fog density is 1. -%% -%% `?GL_FOG_START': `Params' is a single integer or floating-point value that specifies -%% start, the near distance used in the linear fog equation. The initial near distance -%% is 0. -%% -%% `?GL_FOG_END': `Params' is a single integer or floating-point value that specifies -%% end, the far distance used in the linear fog equation. The initial far distance is 1. -%% -%% `?GL_FOG_INDEX': `Params' is a single integer or floating-point value that specifies -%% i f, the fog color index. The initial fog index is 0. -%% -%% `?GL_FOG_COLOR': `Params' contains four integer or floating-point values that -%% specify C f, the fog color. Integer values are mapped linearly such that the most positive -%% representable value maps to 1.0, and the most negative representable value maps to -1.0. -%% Floating-point values are mapped directly. After conversion, all color components are -%% clamped to the range [0 1]. The initial fog color is (0, 0, 0, 0). -%% -%% `?GL_FOG_COORD_SRC': `Params' contains either of the following symbolic constants: -%% `?GL_FOG_COORD' or `?GL_FRAGMENT_DEPTH'. `?GL_FOG_COORD' specifies that -%% the current fog coordinate should be used as distance value in the fog color computation. -%% `?GL_FRAGMENT_DEPTH' specifies that the current fragment depth should be used as -%% distance value in the fog computation. -%% -%% Fog blends a fog color with each rasterized pixel fragment's post-texturing color using -%% a blending factor f. Factor f is computed in one of three ways, depending on the fog -%% mode. Let c be either the distance in eye coordinate from the origin (in the case that -%% the `?GL_FOG_COORD_SRC' is `?GL_FRAGMENT_DEPTH') or the current fog coordinate -%% (in the case that `?GL_FOG_COORD_SRC' is `?GL_FOG_COORD'). The equation for `?GL_LINEAR' -%% fog is f=(end-c)/(end-start) -%% -%% The equation for `?GL_EXP' fog is f=e(-(density. c)) -%% -%% The equation for `?GL_EXP2' fog is f=e(-(density. c)) 2 -%% -%% Regardless of the fog mode, f is clamped to the range [0 1] after it is computed. Then, -%% if the GL is in RGBA color mode, the fragment's red, green, and blue colors, represented -%% by C r, are replaced by -%% -%% (C r)"=f×C r+(1-f)×C f -%% -%% Fog does not affect a fragment's alpha component. -%% -%% In color index mode, the fragment's color index i r is replaced by -%% -%% (i r)"=i r+(1-f)×i f -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFog.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFog.xml">external</a> documentation. -spec fogf(Pname, Param) -> 'ok' when Pname :: enum(),Param :: float(). fogf(Pname,Param) -> cast(5304, <<Pname:?GLenum,Param:?GLfloat>>). @@ -7642,106 +3038,7 @@ fogiv(Pname,Params) -> %% about primitives that would have been rasterized is fed back to the application using %% the GL. %% -%% ``gl:feedbackBuffer'' has three arguments: `Buffer' is a pointer to an array of -%% floating-point values into which feedback information is placed. `Size' indicates -%% the size of the array. `Type' is a symbolic constant describing the information that -%% is fed back for each vertex. ``gl:feedbackBuffer'' must be issued before feedback mode -%% is enabled (by calling {@link gl:renderMode/1} with argument `?GL_FEEDBACK'). Setting -%% `?GL_FEEDBACK' without establishing the feedback buffer, or calling ``gl:feedbackBuffer'' -%% while the GL is in feedback mode, is an error. -%% -%% When {@link gl:renderMode/1} is called while in feedback mode, it returns the number of -%% entries placed in the feedback array and resets the feedback array pointer to the base -%% of the feedback buffer. The returned value never exceeds `Size' . If the feedback -%% data required more room than was available in `Buffer' , {@link gl:renderMode/1} returns -%% a negative value. To take the GL out of feedback mode, call {@link gl:renderMode/1} with -%% a parameter value other than `?GL_FEEDBACK'. -%% -%% While in feedback mode, each primitive, bitmap, or pixel rectangle that would be rasterized -%% generates a block of values that are copied into the feedback array. If doing so would -%% cause the number of entries to exceed the maximum, the block is partially written so as -%% to fill the array (if there is any room left at all), and an overflow flag is set. Each -%% block begins with a code indicating the primitive type, followed by values that describe -%% the primitive's vertices and associated data. Entries are also written for bitmaps and -%% pixel rectangles. Feedback occurs after polygon culling and {@link gl:polygonMode/2} interpretation -%% of polygons has taken place, so polygons that are culled are not returned in the feedback -%% buffer. It can also occur after polygons with more than three edges are broken up into -%% triangles, if the GL implementation renders polygons by performing this decomposition. -%% -%% The {@link gl:passThrough/1} command can be used to insert a marker into the feedback -%% buffer. See {@link gl:passThrough/1} . -%% -%% Following is the grammar for the blocks of values written into the feedback buffer. Each -%% primitive is indicated with a unique identifying value followed by some number of vertices. -%% Polygon entries include an integer value indicating how many vertices follow. A vertex -%% is fed back as some number of floating-point values, as determined by `Type' . Colors -%% are fed back as four values in RGBA mode and one value in color index mode. -%% -%% feedbackList ← feedbackItem feedbackList | feedbackItem -%% -%% feedbackItem ← point | lineSegment | polygon | bitmap | pixelRectangle | passThru -%% -%% point ←`?GL_POINT_TOKEN' vertex -%% -%% lineSegment ←`?GL_LINE_TOKEN' vertex vertex | `?GL_LINE_RESET_TOKEN' vertex -%% vertex -%% -%% polygon ←`?GL_POLYGON_TOKEN' n polySpec -%% -%% polySpec ← polySpec vertex | vertex vertex vertex -%% -%% bitmap ←`?GL_BITMAP_TOKEN' vertex -%% -%% pixelRectangle ←`?GL_DRAW_PIXEL_TOKEN' vertex | `?GL_COPY_PIXEL_TOKEN' vertex -%% -%% -%% passThru ←`?GL_PASS_THROUGH_TOKEN' value -%% -%% vertex ← 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture -%% -%% 2d ← value value -%% -%% 3d ← value value value -%% -%% 3dColor ← value value value color -%% -%% 3dColorTexture ← value value value color tex -%% -%% 4dColorTexture ← value value value value color tex -%% -%% color ← rgba | index -%% -%% rgba ← value value value value -%% -%% index ← value -%% -%% tex ← value value value value -%% -%% `value' is a floating-point number, and `n' is a floating-point integer giving -%% the number of vertices in the polygon. `?GL_POINT_TOKEN', `?GL_LINE_TOKEN', `?GL_LINE_RESET_TOKEN' -%% , `?GL_POLYGON_TOKEN', `?GL_BITMAP_TOKEN', `?GL_DRAW_PIXEL_TOKEN', `?GL_COPY_PIXEL_TOKEN' -%% and `?GL_PASS_THROUGH_TOKEN' are symbolic floating-point constants. `?GL_LINE_RESET_TOKEN' -%% is returned whenever the line stipple pattern is reset. The data returned as a vertex -%% depends on the feedback `Type' . -%% -%% The following table gives the correspondence between `Type' and the number of values -%% per vertex. `k' is 1 in color index mode and 4 in RGBA mode. -%% -%% <table><tbody><tr><td>` Type '</td><td>` Coordinates '</td><td>` Color '</td> -%% <td>` Texture '</td><td>` Total Number of Values '</td></tr></tbody><tbody><tr><td> -%% `?GL_2D'</td><td>`x', `y'</td><td></td><td></td><td> 2 </td></tr><tr><td>`?GL_3D' -%% </td><td>`x', `y', `z'</td><td></td><td></td><td> 3 </td></tr><tr><td>`?GL_3D_COLOR' -%% </td><td>`x', `y', `z'</td><td> k</td><td></td><td> 3+k</td></tr><tr><td>`?GL_3D_COLOR_TEXTURE' -%% </td><td>`x', `y', `z'</td><td> k</td><td> 4 </td><td> 7+k</td></tr><tr><td> -%% `?GL_4D_COLOR_TEXTURE'</td><td>`x', `y', `z', `w'</td><td> k</td> -%% <td> 4 </td><td> 8+k</td></tr></tbody></table> -%% -%% Feedback vertex coordinates are in window coordinates, except `w', which is in clip -%% coordinates. Feedback colors are lighted, if lighting is enabled. Feedback texture coordinates -%% are generated, if texture coordinate generation is enabled. They are always transformed -%% by the texture matrix. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFeedbackBuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFeedbackBuffer.xml">external</a> documentation. -spec feedbackBuffer(Size, Type, Buffer) -> 'ok' when Size :: integer(),Type :: enum(),Buffer :: mem(). feedbackBuffer(Size,Type,Buffer) -> send_bin(Buffer), @@ -7749,18 +3046,9 @@ feedbackBuffer(Size,Type,Buffer) -> %% @doc Place a marker in the feedback buffer %% -%% Feedback is a GL render mode. The mode is selected by calling {@link gl:renderMode/1} -%% with `?GL_FEEDBACK'. When the GL is in feedback mode, no pixels are produced by rasterization. -%% Instead, information about primitives that would have been rasterized is fed back to the -%% application using the GL. See the {@link gl:feedbackBuffer/3} reference page for a description -%% of the feedback buffer and the values in it. -%% -%% ``gl:passThrough'' inserts a user-defined marker in the feedback buffer when it is executed -%% in feedback mode. `Token' is returned as if it were a primitive; it is indicated -%% with its own unique identifying value: `?GL_PASS_THROUGH_TOKEN'. The order of ``gl:passThrough'' -%% commands with respect to the specification of graphics primitives is maintained. +%% %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPassThrough.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPassThrough.xml">external</a> documentation. -spec passThrough(Token) -> 'ok' when Token :: float(). passThrough(Token) -> cast(5309, <<Token:?GLfloat>>). @@ -7774,38 +3062,7 @@ passThrough(Token) -> %% must be issued before selection mode is enabled, and it must not be issued while the %% rendering mode is `?GL_SELECT'. %% -%% A programmer can use selection to determine which primitives are drawn into some region -%% of a window. The region is defined by the current modelview and perspective matrices. -%% -%% In selection mode, no pixel fragments are produced from rasterization. Instead, if a -%% primitive or a raster position intersects the clipping volume defined by the viewing frustum -%% and the user-defined clipping planes, this primitive causes a selection hit. (With polygons, -%% no hit occurs if the polygon is culled.) When a change is made to the name stack, or when -%% {@link gl:renderMode/1} is called, a hit record is copied to `Buffer' if any hits -%% have occurred since the last such event (name stack change or {@link gl:renderMode/1} call). -%% The hit record consists of the number of names in the name stack at the time of the event, -%% followed by the minimum and maximum depth values of all vertices that hit since the previous -%% event, followed by the name stack contents, bottom name first. -%% -%% Depth values (which are in the range [0,1]) are multiplied by 2 32-1, before being -%% placed in the hit record. -%% -%% An internal index into `Buffer' is reset to 0 whenever selection mode is entered. -%% Each time a hit record is copied into `Buffer' , the index is incremented to point -%% to the cell just past the end of the block of names(emthat is, to the next available cell -%% If the hit record is larger than the number of remaining locations in `Buffer' , as -%% much data as can fit is copied, and the overflow flag is set. If the name stack is empty -%% when a hit record is copied, that record consists of 0 followed by the minimum and maximum -%% depth values. -%% -%% To exit selection mode, call {@link gl:renderMode/1} with an argument other than `?GL_SELECT' -%% . Whenever {@link gl:renderMode/1} is called while the render mode is `?GL_SELECT', -%% it returns the number of hit records copied to `Buffer' , resets the overflow flag -%% and the selection buffer pointer, and initializes the name stack to be empty. If the overflow -%% bit was set when {@link gl:renderMode/1} was called, a negative hit record count is returned. -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glSelectBuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glSelectBuffer.xml">external</a> documentation. -spec selectBuffer(Size, Buffer) -> 'ok' when Size :: integer(),Buffer :: mem(). selectBuffer(Size,Buffer) -> send_bin(Buffer), @@ -7817,10 +3074,7 @@ selectBuffer(Size,Buffer) -> %% uniquely identified. It consists of an ordered set of unsigned integers. ``gl:initNames'' %% causes the name stack to be initialized to its default empty state. %% -%% The name stack is always empty while the render mode is not `?GL_SELECT'. Calls to ``gl:initNames'' -%% while the render mode is not `?GL_SELECT' are ignored. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glInitNames.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glInitNames.xml">external</a> documentation. -spec initNames() -> 'ok'. initNames() -> cast(5311, <<>>). @@ -7831,12 +3085,7 @@ initNames() -> %% uniquely identified. It consists of an ordered set of unsigned integers and is initially %% empty. %% -%% ``gl:loadName'' causes `Name' to replace the value on the top of the name stack. -%% -%% The name stack is always empty while the render mode is not `?GL_SELECT'. Calls to ``gl:loadName'' -%% while the render mode is not `?GL_SELECT' are ignored. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLoadName.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glLoadName.xml">external</a> documentation. -spec loadName(Name) -> 'ok' when Name :: integer(). loadName(Name) -> cast(5312, <<Name:?GLuint>>). @@ -7847,20 +3096,7 @@ loadName(Name) -> %% uniquely identified. It consists of an ordered set of unsigned integers and is initially %% empty. %% -%% ``gl:pushName'' causes `Name' to be pushed onto the name stack. {@link gl:pushName/1} -%% pops one name off the top of the stack. -%% -%% The maximum name stack depth is implementation-dependent; call `?GL_MAX_NAME_STACK_DEPTH' -%% to find out the value for a particular implementation. It is an error to push a name -%% onto a full stack or to pop a name off an empty stack. It is also an error to manipulate -%% the name stack between the execution of {@link gl:'begin'/1} and the corresponding execution -%% of {@link gl:'begin'/1} . In any of these cases, the error flag is set and no other change is -%% made to GL state. -%% -%% The name stack is always empty while the render mode is not `?GL_SELECT'. Calls to ``gl:pushName'' -%% or {@link gl:pushName/1} while the render mode is not `?GL_SELECT' are ignored. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPushName.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPushName.xml">external</a> documentation. -spec pushName(Name) -> 'ok' when Name :: integer(). pushName(Name) -> cast(5313, <<Name:?GLuint>>). @@ -7878,7 +3114,7 @@ popName() -> %% for a complete description of the blending operations. Initially the `?GL_BLEND_COLOR' %% is set to (0, 0, 0, 0). %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBlendColor.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendColor.xhtml">external</a> documentation. -spec blendColor(Red, Green, Blue, Alpha) -> 'ok' when Red :: clamp(),Green :: clamp(),Blue :: clamp(),Alpha :: clamp(). blendColor(Red,Green,Blue,Alpha) -> cast(5315, <<Red:?GLclampf,Green:?GLclampf,Blue:?GLclampf,Alpha:?GLclampf>>). @@ -7891,35 +3127,7 @@ blendColor(Red,Green,Blue,Alpha) -> %% specifies the blend equation for a single draw buffer whereas ``gl:blendEquation'' %% sets the blend equation for all draw buffers. %% -%% These equations use the source and destination blend factors specified by either {@link gl:blendFunc/2} -%% or {@link gl:blendFuncSeparate/4} . See {@link gl:blendFunc/2} or {@link gl:blendFuncSeparate/4} -%% for a description of the various blend factors. -%% -%% In the equations that follow, source and destination color components are referred to -%% as (R s G s B s A s) and (R d G d B d A d), respectively. The result color is referred to as (R r G r B r A r). The source and destination -%% blend factors are denoted (s R s G s B s A) and (d R d G d B d A), respectively. For these equations all color components -%% are understood to have values in the range [0 1]. <table><tbody><tr><td>` Mode '</td><td> -%% ` RGB Components '</td><td>` Alpha Component '</td></tr></tbody><tbody><tr><td>`?GL_FUNC_ADD' -%% </td><td> Rr=R s s R+R d d R Gr=G s s G+G d d G Br=B s s B+B d d B</td><td> Ar=A s -%% s A+A d d A</td></tr><tr><td>`?GL_FUNC_SUBTRACT'</td><td> Rr=R s s R-R d d R Gr=G -%% s s G-G d d G Br=B s s B-B d d B</td><td> Ar=A s s A-A d d A</td></tr><tr><td>`?GL_FUNC_REVERSE_SUBTRACT' -%% </td><td> Rr=R d d R-R s s R Gr=G d d G-G s s G Br=B d d B-B s s B</td><td> Ar=A d -%% d A-A s s A</td></tr><tr><td>`?GL_MIN'</td><td> Rr=min(R s R d) Gr=min(G s G d) Br=min(B s B d)</td><td> Ar=min -%% (A s A d)</td></tr><tr><td>`?GL_MAX'</td><td> Rr=max(R s R d) Gr=max(G s G d) Br=max(B s B d)</td><td> Ar=max(A s A d)</td></tr></tbody> -%% </table> -%% -%% The results of these equations are clamped to the range [0 1]. -%% -%% The `?GL_MIN' and `?GL_MAX' equations are useful for applications that analyze -%% image data (image thresholding against a constant color, for example). The `?GL_FUNC_ADD' -%% equation is useful for antialiasing and transparency, among other things. -%% -%% Initially, both the RGB blend equation and the alpha blend equation are set to `?GL_FUNC_ADD' -%% . -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBlendEquation.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendEquation.xhtml">external</a> documentation. -spec blendEquation(Mode) -> 'ok' when Mode :: enum(). blendEquation(Mode) -> cast(5316, <<Mode:?GLenum>>). @@ -7931,24 +3139,7 @@ blendEquation(Mode) -> %% , with the additional constraint that all values in the arrays `Count' must lie between %% `Start' and `End' , inclusive. %% -%% Implementations denote recommended maximum amounts of vertex and index data, which may -%% be queried by calling {@link gl:getBooleanv/1} with argument `?GL_MAX_ELEMENTS_VERTICES' and `?GL_MAX_ELEMENTS_INDICES' -%% . If end-start+1 is greater than the value of `?GL_MAX_ELEMENTS_VERTICES', or if `Count' -%% is greater than the value of `?GL_MAX_ELEMENTS_INDICES', then the call may operate -%% at reduced performance. There is no requirement that all vertices in the range [start end] be referenced. -%% However, the implementation may partially process unused vertices, reducing performance -%% from what could be achieved with an optimal index set. -%% -%% When ``gl:drawRangeElements'' is called, it uses `Count' sequential elements from -%% an enabled array, starting at `Start' to construct a sequence of geometric primitives. -%% `Mode' specifies what kind of primitives are constructed, and how the array elements -%% construct these primitives. If more than one array is enabled, each is used. -%% -%% Vertex attributes that are modified by ``gl:drawRangeElements'' have an unspecified -%% value after ``gl:drawRangeElements'' returns. Attributes that aren't modified maintain -%% their previous values. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawRangeElements.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawRangeElements.xhtml">external</a> documentation. -spec drawRangeElements(Mode, Start, End, Count, Type, Indices) -> 'ok' when Mode :: enum(),Start :: integer(),End :: integer(),Count :: integer(),Type :: enum(),Indices :: offset()|mem(). drawRangeElements(Mode,Start,End,Count,Type,Indices) when is_integer(Indices) -> cast(5317, <<Mode:?GLenum,Start:?GLuint,End:?GLuint,Count:?GLsizei,Type:?GLenum,Indices:?GLuint>>); @@ -7962,101 +3153,7 @@ drawRangeElements(Mode,Start,End,Count,Type,Indices) -> %% which texturing is enabled. To enable and disable three-dimensional texturing, call {@link gl:enable/1} %% and {@link gl:enable/1} with argument `?GL_TEXTURE_3D'. %% -%% To define texture images, call ``gl:texImage3D''. The arguments describe the parameters -%% of the texture image, such as height, width, depth, width of the border, level-of-detail -%% number (see {@link gl:texParameterf/3} ), and number of color components provided. The last -%% three arguments describe how the image is represented in memory. -%% -%% If `Target' is `?GL_PROXY_TEXTURE_3D', no data is read from `Data' , but -%% all of the texture image state is recalculated, checked for consistency, and checked against -%% the implementation's capabilities. If the implementation cannot handle a texture of the -%% requested texture size, it sets all of the image state to 0, but does not generate an -%% error (see {@link gl:getError/0} ). To query for an entire mipmap array, use an image array -%% level greater than or equal to 1. -%% -%% If `Target' is `?GL_TEXTURE_3D', data is read from `Data' as a sequence -%% of signed or unsigned bytes, shorts, or longs, or single-precision floating-point values, -%% depending on `Type' . These values are grouped into sets of one, two, three, or four -%% values, depending on `Format' , to form elements. Each data byte is treated as eight -%% 1-bit elements, with bit ordering determined by `?GL_UNPACK_LSB_FIRST' (see {@link gl:pixelStoref/2} -%% ). -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% The first element corresponds to the lower left corner of the texture image. Subsequent -%% elements progress left-to-right through the remaining texels in the lowest row of the -%% texture image, and then in successively higher rows of the texture image. The final element -%% corresponds to the upper right corner of the texture image. -%% -%% `Format' determines the composition of each element in `Data' . It can assume -%% one of these symbolic values: -%% -%% `?GL_RED': Each element is a single red component. The GL converts it to floating -%% point and assembles it into an RGBA element by attaching 0 for green and blue, and 1 for -%% alpha. Each component is then multiplied by the signed scale factor `?GL_c_SCALE', -%% added to the signed bias `?GL_c_BIAS', and clamped to the range [0,1]. -%% -%% `?GL_RG': Each element is a red and green pair. The GL converts each to floating -%% point and assembles it into an RGBA element by attaching 0 for blue, and 1 for alpha. -%% Each component is then multiplied by the signed scale factor `?GL_c_SCALE', added -%% to the signed bias `?GL_c_BIAS', and clamped to the range [0,1]. -%% -%% `?GL_RGB' -%% -%% `?GL_BGR': Each element is an RGB triple. The GL converts it to floating point and -%% assembles it into an RGBA element by attaching 1 for alpha. Each component is then multiplied -%% by the signed scale factor `?GL_c_SCALE', added to the signed bias `?GL_c_BIAS', -%% and clamped to the range [0,1]. -%% -%% `?GL_RGBA' -%% -%% `?GL_BGRA': Each element contains all four components. Each component is multiplied -%% by the signed scale factor `?GL_c_SCALE', added to the signed bias `?GL_c_BIAS', -%% and clamped to the range [0,1]. -%% -%% If an application wants to store the texture at a certain resolution or in a certain -%% format, it can request the resolution and format with `InternalFormat' . The GL will -%% choose an internal representation that closely approximates that requested by `InternalFormat' -%% , but it may not match exactly. (The representations specified by `?GL_RED', `?GL_RG' -%% , `?GL_RGB', and `?GL_RGBA' must match exactly.) -%% -%% `InternalFormat' may be one of the base internal formats shown in Table 1, below -%% -%% `InternalFormat' may also be one of the sized internal formats shown in Table 2, -%% below -%% -%% Finally, `InternalFormat' may also be one of the generic or compressed compressed -%% texture formats shown in Table 3 below -%% -%% If the `InternalFormat' parameter is one of the generic compressed formats, `?GL_COMPRESSED_RED' -%% , `?GL_COMPRESSED_RG', `?GL_COMPRESSED_RGB', or `?GL_COMPRESSED_RGBA', -%% the GL will replace the internal format with the symbolic constant for a specific internal -%% format and compress the texture before storage. If no corresponding internal format is -%% available, or the GL can not compress that image for any reason, the internal format is -%% instead replaced with a corresponding base internal format. -%% -%% If the `InternalFormat' parameter is `?GL_SRGB', `?GL_SRGB8', `?GL_SRGB_ALPHA' -%% , or `?GL_SRGB8_ALPHA8', the texture is treated as if the red, green, blue, or -%% luminance components are encoded in the sRGB color space. Any alpha component is left -%% unchanged. The conversion from the sRGB encoded component c s to a linear component -%% c l is: -%% -%% c l={ c s/12.92if c s&le; 0.04045( c s+0.055/1.055) 2.4if c s> 0.04045 -%% -%% Assume c s is the sRGB component in the range [0,1]. -%% -%% Use the `?GL_PROXY_TEXTURE_3D' target to try out a resolution and format. The implementation -%% will update and recompute its best match for the requested storage resolution and format. -%% To then query this state, call {@link gl:getTexLevelParameterfv/3} . If the texture cannot -%% be accommodated, texture state is set to 0. -%% -%% A one-component texture image uses only the red component of the RGBA color extracted -%% from `Data' . A two-component image uses the R and A values. A three-component image -%% uses the R, G, and B values. A four-component image uses all of the RGBA components. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexImage3D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexImage3D.xhtml">external</a> documentation. -spec texImage3D(Target, Level, InternalFormat, Width, Height, Depth, Border, Format, Type, Pixels) -> 'ok' when Target :: enum(),Level :: integer(),InternalFormat :: integer(),Width :: integer(),Height :: integer(),Depth :: integer(),Border :: integer(),Format :: enum(),Type :: enum(),Pixels :: offset()|mem(). texImage3D(Target,Level,InternalFormat,Width,Height,Depth,Border,Format,Type,Pixels) when is_integer(Pixels) -> cast(5319, <<Target:?GLenum,Level:?GLint,InternalFormat:?GLint,Width:?GLsizei,Height:?GLsizei,Depth:?GLsizei,Border:?GLint,Format:?GLenum,Type:?GLenum,Pixels:?GLuint>>); @@ -8066,7 +3163,7 @@ texImage3D(Target,Level,InternalFormat,Width,Height,Depth,Border,Format,Type,Pix %% @doc glTexSubImage %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexSubImage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec texSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, Type, Pixels) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),Yoffset :: integer(),Zoffset :: integer(),Width :: integer(),Height :: integer(),Depth :: integer(),Format :: enum(),Type :: enum(),Pixels :: offset()|mem(). texSubImage3D(Target,Level,Xoffset,Yoffset,Zoffset,Width,Height,Depth,Format,Type,Pixels) when is_integer(Pixels) -> cast(5321, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,Yoffset:?GLint,Zoffset:?GLint,Width:?GLsizei,Height:?GLsizei,Depth:?GLsizei,Format:?GLenum,Type:?GLenum,Pixels:?GLuint>>); @@ -8080,30 +3177,7 @@ texSubImage3D(Target,Level,Xoffset,Yoffset,Zoffset,Width,Height,Depth,Format,Typ %% image with pixels from the current `?GL_READ_BUFFER' (rather than from main memory, %% as is the case for {@link gl:texSubImage1D/7} ). %% -%% The screen-aligned pixel rectangle with lower left corner at ( `X' , `Y' ) and -%% with width `Width' and height `Height' replaces the portion of the texture array -%% with x indices `Xoffset' through xoffset+width-1, inclusive, and y indices `Yoffset' -%% through yoffset+height-1, inclusive, at z index `Zoffset' and at the mipmap level -%% specified by `Level' . -%% -%% The pixels in the rectangle are processed exactly as if {@link gl:readPixels/7} had been -%% called, but the process stops just before final conversion. At this point, all pixel component -%% values are clamped to the range [0 1] and then converted to the texture's internal format -%% for storage in the texel array. -%% -%% The destination rectangle in the texture array may not include any texels outside the -%% texture array as it was originally specified. It is not an error to specify a subtexture -%% with zero width or height, but such a specification has no effect. -%% -%% If any of the pixels within the specified rectangle of the current `?GL_READ_BUFFER' -%% are outside the read window associated with the current rendering context, then the values -%% obtained for those pixels are undefined. -%% -%% No change is made to the `internalformat', `width', `height', `depth', -%% or `border' parameters of the specified texture array or to texel values outside -%% the specified subregion. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyTexSubImage3D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCopyTexSubImage3D.xhtml">external</a> documentation. -spec copyTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, X, Y, Width, Height) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),Yoffset :: integer(),Zoffset :: integer(),X :: integer(),Y :: integer(),Width :: integer(),Height :: integer(). copyTexSubImage3D(Target,Level,Xoffset,Yoffset,Zoffset,X,Y,Width,Height) -> cast(5323, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,Yoffset:?GLint,Zoffset:?GLint,X:?GLint,Y:?GLint,Width:?GLsizei,Height:?GLsizei>>). @@ -8115,95 +3189,7 @@ copyTexSubImage3D(Target,Level,Xoffset,Yoffset,Zoffset,X,Y,Width,Height) -> %% lookup table. Use the targets `?GL_PROXY_*' for the first case and the other targets %% for the second case. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a color table is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% If `Target' is `?GL_COLOR_TABLE', `?GL_POST_CONVOLUTION_COLOR_TABLE', or `?GL_POST_COLOR_MATRIX_COLOR_TABLE' -%% , ``gl:colorTable'' builds a color lookup table from an array of pixels. The pixel array -%% specified by `Width' , `Format' , `Type' , and `Data' is extracted from -%% memory and processed just as if {@link gl:drawPixels/5} were called, but processing stops -%% after the final expansion to RGBA is completed. -%% -%% The four scale parameters and the four bias parameters that are defined for the table -%% are then used to scale and bias the R, G, B, and A components of each pixel. (Use ``gl:colorTableParameter'' -%% to set these scale and bias parameters.) -%% -%% Next, the R, G, B, and A values are clamped to the range [0 1]. Each pixel is then converted -%% to the internal format specified by `Internalformat' . This conversion simply maps -%% the component values of the pixel (R, G, B, and A) to the values included in the internal -%% format (red, green, blue, alpha, luminance, and intensity). The mapping is as follows: -%% -%% <table><tbody><tr><td>` Internal Format '</td><td>` Red '</td><td>` Green '</td> -%% <td>` Blue '</td><td>` Alpha '</td><td>` Luminance '</td><td>` Intensity ' -%% </td></tr></tbody><tbody><tr><td>`?GL_ALPHA'</td><td></td><td></td><td></td><td> A </td> -%% <td></td><td></td></tr><tr><td>`?GL_LUMINANCE'</td><td></td><td></td><td></td><td></td> -%% <td> R </td><td></td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td><td></td><td></td><td></td> -%% <td> A </td><td> R </td><td></td></tr><tr><td>`?GL_INTENSITY'</td><td></td><td></td><td> -%% </td><td></td><td></td><td> R </td></tr><tr><td>`?GL_RGB'</td><td> R </td><td> G </td> -%% <td> B </td><td></td><td></td><td></td></tr><tr><td>`?GL_RGBA'</td><td> R </td><td> -%% G </td><td> B </td><td> A </td><td></td><td></td></tr></tbody></table> -%% -%% Finally, the red, green, blue, alpha, luminance, and/or intensity components of the resulting -%% pixels are stored in the color table. They form a one-dimensional table with indices in -%% the range [0 width-1]. -%% -%% If `Target' is `?GL_PROXY_*', ``gl:colorTable'' recomputes and stores the -%% values of the proxy color table's state variables `?GL_COLOR_TABLE_FORMAT', `?GL_COLOR_TABLE_WIDTH' -%% , `?GL_COLOR_TABLE_RED_SIZE', `?GL_COLOR_TABLE_GREEN_SIZE', `?GL_COLOR_TABLE_BLUE_SIZE' -%% , `?GL_COLOR_TABLE_ALPHA_SIZE', `?GL_COLOR_TABLE_LUMINANCE_SIZE', and `?GL_COLOR_TABLE_INTENSITY_SIZE' -%% . There is no effect on the image or state of any actual color table. If the specified -%% color table is too large to be supported, then all the proxy state variables listed above -%% are set to zero. Otherwise, the color table could be supported by ``gl:colorTable'' -%% using the corresponding non-proxy target, and the proxy state variables are set as if -%% that target were being defined. -%% -%% The proxy state variables can be retrieved by calling {@link gl:getColorTableParameterfv/2} -%% with a target of `?GL_PROXY_*'. This allows the application to decide if a particular -%% ``gl:colorTable'' command would succeed, and to determine what the resulting color table -%% attributes would be. -%% -%% If a color table is enabled, and its width is non-zero, then its contents are used to -%% replace a subset of the components of each RGBA pixel group, based on the internal format -%% of the table. -%% -%% Each pixel group has color components (R, G, B, A) that are in the range [0.0 1.0]. The color -%% components are rescaled to the size of the color lookup table to form an index. Then a -%% subset of the components based on the internal format of the table are replaced by the -%% table entry selected by that index. If the color components and contents of the table -%% are represented as follows: -%% -%% <table><tbody><tr><td>` Representation '</td><td>` Meaning '</td></tr></tbody><tbody> -%% <tr><td>r</td><td> Table index computed from R</td></tr><tr><td>g</td><td> Table index -%% computed from G</td></tr><tr><td>b</td><td> Table index computed from B</td></tr><tr><td>a -%% </td><td> Table index computed from A</td></tr><tr><td>L[i]</td><td> Luminance value at -%% table index i</td></tr><tr><td>I[i]</td><td> Intensity value at table index i</td></tr><tr> -%% <td>R[i]</td><td> Red value at table index i</td></tr><tr><td>G[i]</td><td> Green value -%% at table index i</td></tr><tr><td>B[i]</td><td> Blue value at table index i</td></tr><tr><td> -%% A[i]</td><td> Alpha value at table index i</td></tr></tbody></table> -%% -%% then the result of color table lookup is as follows: -%% -%% <table><tbody><tr><td></td><td>` Resulting Texture Components '</td></tr><tr><td>` Table Internal Format ' -%% </td><td>` R '</td><td>` G '</td><td>` B '</td><td>` A '</td></tr></tbody> -%% <tbody><tr><td>`?GL_ALPHA'</td><td>R</td><td>G</td><td>B</td><td>A[a]</td></tr><tr><td> -%% `?GL_LUMINANCE'</td><td>L[r]</td><td>L[g]</td><td>L[b]</td><td>At</td></tr><tr><td>`?GL_LUMINANCE_ALPHA' -%% </td><td>L[r]</td><td>L[g]</td><td>L[b]</td><td>A[a]</td></tr><tr><td>`?GL_INTENSITY'</td> -%% <td>I[r]</td><td>I[g]</td><td>I[b]</td><td>I[a]</td></tr><tr><td>`?GL_RGB'</td><td>R[r] -%% </td><td>G[g]</td><td>B[b]</td><td>A</td></tr><tr><td>`?GL_RGBA'</td><td>R[r]</td><td> -%% G[g]</td><td>B[b]</td><td>A[a]</td></tr></tbody></table> -%% -%% When `?GL_COLOR_TABLE' is enabled, the colors resulting from the pixel map operation -%% (if it is enabled) are mapped by the color lookup table before being passed to the convolution -%% operation. The colors resulting from the convolution operation are modified by the post -%% convolution color lookup table when `?GL_POST_CONVOLUTION_COLOR_TABLE' is enabled. -%% These modified colors are then sent to the color matrix operation. Finally, if `?GL_POST_COLOR_MATRIX_COLOR_TABLE' -%% is enabled, the colors resulting from the color matrix operation are mapped by the post -%% color matrix color lookup table before being used by the histogram operation. -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glColorTable.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glColorTable.xml">external</a> documentation. -spec colorTable(Target, Internalformat, Width, Format, Type, Table) -> 'ok' when Target :: enum(),Internalformat :: enum(),Width :: integer(),Format :: enum(),Type :: enum(),Table :: offset()|mem(). colorTable(Target,Internalformat,Width,Format,Type,Table) when is_integer(Table) -> cast(5324, <<Target:?GLenum,Internalformat:?GLenum,Width:?GLsizei,Format:?GLenum,Type:?GLenum,Table:?GLuint>>); @@ -8218,17 +3204,7 @@ colorTable(Target,Internalformat,Width,Format,Type,Table) -> %% color table the scale and bias terms apply to; it must be set to `?GL_COLOR_TABLE', `?GL_POST_CONVOLUTION_COLOR_TABLE' %% , or `?GL_POST_COLOR_MATRIX_COLOR_TABLE'. %% -%% `Pname' must be `?GL_COLOR_TABLE_SCALE' to set the scale factors. In this case, -%% `Params' points to an array of four values, which are the scale factors for red, -%% green, blue, and alpha, in that order. -%% -%% `Pname' must be `?GL_COLOR_TABLE_BIAS' to set the bias terms. In this case, `Params' -%% points to an array of four values, which are the bias terms for red, green, blue, and -%% alpha, in that order. -%% -%% The color tables themselves are specified by calling {@link gl:colorTable/6} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glColorTableParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glColorTableParameter.xml">external</a> documentation. -spec colorTableParameterfv(Target, Pname, Params) -> 'ok' when Target :: enum(),Pname :: enum(),Params :: {float(),float(),float(),float()}. colorTableParameterfv(Target,Pname,{P1,P2,P3,P4}) -> cast(5326, <<Target:?GLenum,Pname:?GLenum,P1:?GLfloat,P2:?GLfloat,P3:?GLfloat,P4:?GLfloat>>). @@ -8244,41 +3220,7 @@ colorTableParameteriv(Target,Pname,{P1,P2,P3,P4}) -> %% ``gl:copyColorTable'' loads a color table with pixels from the current `?GL_READ_BUFFER' %% (rather than from main memory, as is the case for {@link gl:colorTable/6} ). %% -%% The screen-aligned pixel rectangle with lower-left corner at ( `X' , `Y' ) having -%% width `Width' and height 1 is loaded into the color table. If any pixels within this -%% region are outside the window that is associated with the GL context, the values obtained -%% for those pixels are undefined. -%% -%% The pixels in the rectangle are processed just as if {@link gl:readPixels/7} were called, -%% with `Internalformat' set to RGBA, but processing stops after the final conversion -%% to RGBA. -%% -%% The four scale parameters and the four bias parameters that are defined for the table -%% are then used to scale and bias the R, G, B, and A components of each pixel. The scale -%% and bias parameters are set by calling {@link gl:colorTableParameterfv/3} . -%% -%% Next, the R, G, B, and A values are clamped to the range [0 1]. Each pixel is then converted -%% to the internal format specified by `Internalformat' . This conversion simply maps -%% the component values of the pixel (R, G, B, and A) to the values included in the internal -%% format (red, green, blue, alpha, luminance, and intensity). The mapping is as follows: -%% -%% <table><tbody><tr><td>` Internal Format '</td><td>` Red '</td><td>` Green '</td> -%% <td>` Blue '</td><td>` Alpha '</td><td>` Luminance '</td><td>` Intensity ' -%% </td></tr></tbody><tbody><tr><td>`?GL_ALPHA'</td><td></td><td></td><td></td><td> A </td> -%% <td></td><td></td></tr><tr><td>`?GL_LUMINANCE'</td><td></td><td></td><td></td><td></td> -%% <td> R </td><td></td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td><td></td><td></td><td></td> -%% <td> A </td><td> R </td><td></td></tr><tr><td>`?GL_INTENSITY'</td><td></td><td></td><td> -%% </td><td></td><td></td><td> R </td></tr><tr><td>`?GL_RGB'</td><td> R </td><td> G </td> -%% <td> B </td><td></td><td></td><td></td></tr><tr><td>`?GL_RGBA'</td><td> R </td><td> -%% G </td><td> B </td><td> A </td><td></td><td></td></tr></tbody></table> -%% -%% Finally, the red, green, blue, alpha, luminance, and/or intensity components of the resulting -%% pixels are stored in the color table. They form a one-dimensional table with indices in -%% the range [0 width-1]. -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyColorTable.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCopyColorTable.xml">external</a> documentation. -spec copyColorTable(Target, Internalformat, X, Y, Width) -> 'ok' when Target :: enum(),Internalformat :: enum(),X :: integer(),Y :: integer(),Width :: integer(). copyColorTable(Target,Internalformat,X,Y,Width) -> cast(5328, <<Target:?GLenum,Internalformat:?GLenum,X:?GLint,Y:?GLint,Width:?GLsizei>>). @@ -8289,21 +3231,7 @@ copyColorTable(Target,Internalformat,X,Y,Width) -> %% by `Target' . No pixel transfer operations are performed, but pixel storage modes %% that are applicable to {@link gl:readPixels/7} are performed. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a histogram table is requested, `Table' is treated -%% as a byte offset into the buffer object's data store. -%% -%% Color components that are requested in the specified `Format' , but which are not -%% included in the internal format of the color lookup table, are returned as zero. The assignments -%% of internal color components to the components requested by `Format' are <table><tbody> -%% <tr><td>` Internal Component '</td><td>` Resulting Component '</td></tr></tbody> -%% <tbody><tr><td> Red </td><td> Red </td></tr><tr><td> Green </td><td> Green </td></tr><tr><td> -%% Blue </td><td> Blue </td></tr><tr><td> Alpha </td><td> Alpha </td></tr><tr><td> Luminance -%% </td><td> Red </td></tr><tr><td> Intensity </td><td> Red </td></tr></tbody></table> -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetColorTable.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetColorTable.xml">external</a> documentation. -spec getColorTable(Target, Format, Type, Table) -> 'ok' when Target :: enum(),Format :: enum(),Type :: enum(),Table :: mem(). getColorTable(Target,Format,Type,Table) -> send_bin(Table), @@ -8313,36 +3241,7 @@ getColorTable(Target,Format,Type,Table) -> %% %% Returns parameters specific to color table `Target' . %% -%% When `Pname' is set to `?GL_COLOR_TABLE_SCALE' or `?GL_COLOR_TABLE_BIAS', -%% ``gl:getColorTableParameter'' returns the color table scale or bias parameters for the -%% table specified by `Target' . For these queries, `Target' must be set to `?GL_COLOR_TABLE' -%% , `?GL_POST_CONVOLUTION_COLOR_TABLE', or `?GL_POST_COLOR_MATRIX_COLOR_TABLE' -%% and `Params' points to an array of four elements, which receive the scale or bias -%% factors for red, green, blue, and alpha, in that order. -%% -%% ``gl:getColorTableParameter'' can also be used to retrieve the format and size parameters -%% for a color table. For these queries, set `Target' to either the color table target -%% or the proxy color table target. The format and size parameters are set by {@link gl:colorTable/6} -%% . -%% -%% The following table lists the format and size parameters that may be queried. For each -%% symbolic constant listed below for `Pname' , `Params' must point to an array -%% of the given length and receive the values indicated. -%% -%% <table><tbody><tr><td>` Parameter '</td><td>` N '</td><td>` Meaning '</td></tr> -%% </tbody><tbody><tr><td>`?GL_COLOR_TABLE_FORMAT'</td><td> 1 </td><td> Internal format -%% (e.g., `?GL_RGBA') </td></tr><tr><td>`?GL_COLOR_TABLE_WIDTH'</td><td> 1 </td><td> -%% Number of elements in table </td></tr><tr><td>`?GL_COLOR_TABLE_RED_SIZE'</td><td> -%% 1 </td><td> Size of red component, in bits </td></tr><tr><td>`?GL_COLOR_TABLE_GREEN_SIZE' -%% </td><td> 1 </td><td> Size of green component </td></tr><tr><td>`?GL_COLOR_TABLE_BLUE_SIZE' -%% </td><td> 1 </td><td> Size of blue component </td></tr><tr><td>`?GL_COLOR_TABLE_ALPHA_SIZE' -%% </td><td> 1 </td><td> Size of alpha component </td></tr><tr><td>`?GL_COLOR_TABLE_LUMINANCE_SIZE' -%% </td><td> 1 </td><td> Size of luminance component </td></tr><tr><td>`?GL_COLOR_TABLE_INTENSITY_SIZE' -%% </td><td> 1 </td><td> Size of intensity component </td></tr></tbody></table> -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetColorTableParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetColorTableParameter.xml">external</a> documentation. -spec getColorTableParameterfv(Target, Pname) -> {float(),float(),float(),float()} when Target :: enum(),Pname :: enum(). getColorTableParameterfv(Target,Pname) -> call(5330, <<Target:?GLenum,Pname:?GLenum>>). @@ -8362,11 +3261,7 @@ getColorTableParameteriv(Target,Pname) -> %% originally specified. It is not an error to specify a subtexture with width of 0, but %% such a specification has no effect. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a portion of a color table is respecified, `Data' -%% is treated as a byte offset into the buffer object's data store. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glColorSubTable.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glColorSubTable.xml">external</a> documentation. -spec colorSubTable(Target, Start, Count, Format, Type, Data) -> 'ok' when Target :: enum(),Start :: integer(),Count :: integer(),Format :: enum(),Type :: enum(),Data :: offset()|mem(). colorSubTable(Target,Start,Count,Format,Type,Data) when is_integer(Data) -> cast(5332, <<Target:?GLenum,Start:?GLsizei,Count:?GLsizei,Format:?GLenum,Type:?GLenum,Data:?GLuint>>); @@ -8383,7 +3278,7 @@ colorSubTable(Target,Start,Count,Format,Type,Data) -> %% specified. It is not an error to specify a subtexture with width of 0, but such a specification %% has no effect. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyColorSubTable.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCopyColorSubTable.xml">external</a> documentation. -spec copyColorSubTable(Target, Start, X, Y, Width) -> 'ok' when Target :: enum(),Start :: integer(),X :: integer(),Y :: integer(),Width :: integer(). copyColorSubTable(Target,Start,X,Y,Width) -> cast(5334, <<Target:?GLenum,Start:?GLsizei,X:?GLint,Y:?GLint,Width:?GLsizei>>). @@ -8393,50 +3288,7 @@ copyColorSubTable(Target,Start,X,Y,Width) -> %% ``gl:convolutionFilter1D'' builds a one-dimensional convolution filter kernel from an %% array of pixels. %% -%% The pixel array specified by `Width' , `Format' , `Type' , and `Data' -%% is extracted from memory and processed just as if {@link gl:drawPixels/5} were called, -%% but processing stops after the final expansion to RGBA is completed. -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a convolution filter is specified, `Data' is -%% treated as a byte offset into the buffer object's data store. -%% -%% The R, G, B, and A components of each pixel are next scaled by the four 1D `?GL_CONVOLUTION_FILTER_SCALE' -%% parameters and biased by the four 1D `?GL_CONVOLUTION_FILTER_BIAS' parameters. (The -%% scale and bias parameters are set by {@link gl:convolutionParameterf/3} using the `?GL_CONVOLUTION_1D' -%% target and the names `?GL_CONVOLUTION_FILTER_SCALE' and `?GL_CONVOLUTION_FILTER_BIAS' -%% . The parameters themselves are vectors of four values that are applied to red, green, -%% blue, and alpha, in that order.) The R, G, B, and A values are not clamped to [0,1] at -%% any time during this process. -%% -%% Each pixel is then converted to the internal format specified by `Internalformat' . -%% This conversion simply maps the component values of the pixel (R, G, B, and A) to the -%% values included in the internal format (red, green, blue, alpha, luminance, and intensity). -%% The mapping is as follows: -%% -%% <table><tbody><tr><td>` Internal Format '</td><td>` Red '</td><td>` Green '</td> -%% <td>` Blue '</td><td>` Alpha '</td><td>` Luminance '</td><td>` Intensity ' -%% </td></tr></tbody><tbody><tr><td>`?GL_ALPHA'</td><td></td><td></td><td></td><td> A </td> -%% <td></td><td></td></tr><tr><td>`?GL_LUMINANCE'</td><td></td><td></td><td></td><td></td> -%% <td> R </td><td></td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td><td></td><td></td><td></td> -%% <td> A </td><td> R </td><td></td></tr><tr><td>`?GL_INTENSITY'</td><td></td><td></td><td> -%% </td><td></td><td></td><td> R </td></tr><tr><td>`?GL_RGB'</td><td> R </td><td> G </td> -%% <td> B </td><td></td><td></td><td></td></tr><tr><td>`?GL_RGBA'</td><td> R </td><td> -%% G </td><td> B </td><td> A </td><td></td><td></td></tr></tbody></table> -%% -%% The red, green, blue, alpha, luminance, and/or intensity components of the resulting -%% pixels are stored in floating-point rather than integer format. They form a one-dimensional -%% filter kernel image indexed with coordinate `i' such that `i' starts at 0 and -%% increases from left to right. Kernel location `i' is derived from the `i'th -%% pixel, counting from 0. -%% -%% Note that after a convolution is performed, the resulting color components are also scaled -%% by their corresponding `?GL_POST_CONVOLUTION_c_SCALE' parameters and biased by their -%% corresponding `?GL_POST_CONVOLUTION_c_BIAS' parameters (where `c' takes on the -%% values `RED', `GREEN', `BLUE', and `ALPHA'). These parameters are -%% set by {@link gl:pixelTransferf/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glConvolutionFilter1D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glConvolutionFilter1D.xml">external</a> documentation. -spec convolutionFilter1D(Target, Internalformat, Width, Format, Type, Image) -> 'ok' when Target :: enum(),Internalformat :: enum(),Width :: integer(),Format :: enum(),Type :: enum(),Image :: offset()|mem(). convolutionFilter1D(Target,Internalformat,Width,Format,Type,Image) when is_integer(Image) -> cast(5335, <<Target:?GLenum,Internalformat:?GLenum,Width:?GLsizei,Format:?GLenum,Type:?GLenum,Image:?GLuint>>); @@ -8449,51 +3301,7 @@ convolutionFilter1D(Target,Internalformat,Width,Format,Type,Image) -> %% ``gl:convolutionFilter2D'' builds a two-dimensional convolution filter kernel from an %% array of pixels. %% -%% The pixel array specified by `Width' , `Height' , `Format' , `Type' , -%% and `Data' is extracted from memory and processed just as if {@link gl:drawPixels/5} -%% were called, but processing stops after the final expansion to RGBA is completed. -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a convolution filter is specified, `Data' is -%% treated as a byte offset into the buffer object's data store. -%% -%% The R, G, B, and A components of each pixel are next scaled by the four 2D `?GL_CONVOLUTION_FILTER_SCALE' -%% parameters and biased by the four 2D `?GL_CONVOLUTION_FILTER_BIAS' parameters. (The -%% scale and bias parameters are set by {@link gl:convolutionParameterf/3} using the `?GL_CONVOLUTION_2D' -%% target and the names `?GL_CONVOLUTION_FILTER_SCALE' and `?GL_CONVOLUTION_FILTER_BIAS' -%% . The parameters themselves are vectors of four values that are applied to red, green, -%% blue, and alpha, in that order.) The R, G, B, and A values are not clamped to [0,1] at -%% any time during this process. -%% -%% Each pixel is then converted to the internal format specified by `Internalformat' . -%% This conversion simply maps the component values of the pixel (R, G, B, and A) to the -%% values included in the internal format (red, green, blue, alpha, luminance, and intensity). -%% The mapping is as follows: -%% -%% <table><tbody><tr><td>` Internal Format '</td><td>` Red '</td><td>` Green '</td> -%% <td>` Blue '</td><td>` Alpha '</td><td>` Luminance '</td><td>` Intensity ' -%% </td></tr></tbody><tbody><tr><td>`?GL_ALPHA'</td><td></td><td></td><td></td><td> A </td> -%% <td></td><td></td></tr><tr><td>`?GL_LUMINANCE'</td><td></td><td></td><td></td><td></td> -%% <td> R </td><td></td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td><td></td><td></td><td></td> -%% <td> A </td><td> R </td><td></td></tr><tr><td>`?GL_INTENSITY'</td><td></td><td></td><td> -%% </td><td></td><td></td><td> R </td></tr><tr><td>`?GL_RGB'</td><td> R </td><td> G </td> -%% <td> B </td><td></td><td></td><td></td></tr><tr><td>`?GL_RGBA'</td><td> R </td><td> -%% G </td><td> B </td><td> A </td><td></td><td></td></tr></tbody></table> -%% -%% The red, green, blue, alpha, luminance, and/or intensity components of the resulting -%% pixels are stored in floating-point rather than integer format. They form a two-dimensional -%% filter kernel image indexed with coordinates `i' and `j' such that `i' -%% starts at zero and increases from left to right, and `j' starts at zero and increases -%% from bottom to top. Kernel location `i,j' is derived from the `N'th pixel, where -%% `N' is `i'+`j'* `Width' . -%% -%% Note that after a convolution is performed, the resulting color components are also scaled -%% by their corresponding `?GL_POST_CONVOLUTION_c_SCALE' parameters and biased by their -%% corresponding `?GL_POST_CONVOLUTION_c_BIAS' parameters (where `c' takes on the -%% values `RED', `GREEN', `BLUE', and `ALPHA'). These parameters are -%% set by {@link gl:pixelTransferf/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glConvolutionFilter2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glConvolutionFilter2D.xml">external</a> documentation. -spec convolutionFilter2D(Target, Internalformat, Width, Height, Format, Type, Image) -> 'ok' when Target :: enum(),Internalformat :: enum(),Width :: integer(),Height :: integer(),Format :: enum(),Type :: enum(),Image :: offset()|mem(). convolutionFilter2D(Target,Internalformat,Width,Height,Format,Type,Image) when is_integer(Image) -> cast(5337, <<Target:?GLenum,Internalformat:?GLenum,Width:?GLsizei,Height:?GLsizei,Format:?GLenum,Type:?GLenum,Image:?GLuint>>); @@ -8505,36 +3313,7 @@ convolutionFilter2D(Target,Internalformat,Width,Height,Format,Type,Image) -> %% %% ``gl:convolutionParameter'' sets the value of a convolution parameter. %% -%% `Target' selects the convolution filter to be affected: `?GL_CONVOLUTION_1D', `?GL_CONVOLUTION_2D' -%% , or `?GL_SEPARABLE_2D' for the 1D, 2D, or separable 2D filter, respectively. -%% -%% `Pname' selects the parameter to be changed. `?GL_CONVOLUTION_FILTER_SCALE' -%% and `?GL_CONVOLUTION_FILTER_BIAS' affect the definition of the convolution filter -%% kernel; see {@link gl:convolutionFilter1D/6} , {@link gl:convolutionFilter2D/7} , and {@link gl:separableFilter2D/8} -%% for details. In these cases, `Params' v is an array of four values to be applied -%% to red, green, blue, and alpha values, respectively. The initial value for `?GL_CONVOLUTION_FILTER_SCALE' -%% is (1, 1, 1, 1), and the initial value for `?GL_CONVOLUTION_FILTER_BIAS' is (0, -%% 0, 0, 0). -%% -%% A `Pname' value of `?GL_CONVOLUTION_BORDER_MODE' controls the convolution border -%% mode. The accepted modes are: -%% -%% `?GL_REDUCE': The image resulting from convolution is smaller than the source image. -%% If the filter width is Wf and height is Hf, and the source image width is Ws and -%% height is Hs, then the convolved image width will be Ws-Wf+1 and height will be Hs-Hf -%% +1. (If this reduction would generate an image with zero or negative width and/or height, -%% the output is simply null, with no error generated.) The coordinates of the image resulting -%% from convolution are zero through Ws-Wf in width and zero through Hs-Hf in height. -%% -%% `?GL_CONSTANT_BORDER': The image resulting from convolution is the same size as -%% the source image, and processed as if the source image were surrounded by pixels with -%% their color specified by the `?GL_CONVOLUTION_BORDER_COLOR'. -%% -%% `?GL_REPLICATE_BORDER': The image resulting from convolution is the same size as -%% the source image, and processed as if the outermost pixel on the border of the source -%% image were replicated. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glConvolutionParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glConvolutionParameter.xml">external</a> documentation. -spec convolutionParameterf(Target, Pname, Params) -> 'ok' when Target :: enum(),Pname :: enum(),Params :: tuple(). convolutionParameterf(Target,Pname,Params) -> cast(5339, <<Target:?GLenum,Pname:?GLenum,(size(Params)):?GLuint, @@ -8561,49 +3340,7 @@ convolutionParameteriv(Target,Pname,{Params}) -> convolutionParameteri(Target,P %% pixels from the current `?GL_READ_BUFFER' (rather than from main memory, as is the %% case for {@link gl:convolutionFilter1D/6} ). %% -%% The screen-aligned pixel rectangle with lower-left corner at ( `X' , `Y' ), width -%% `Width' and height 1 is used to define the convolution filter. If any pixels within -%% this region are outside the window that is associated with the GL context, the values -%% obtained for those pixels are undefined. -%% -%% The pixels in the rectangle are processed exactly as if {@link gl:readPixels/7} had been -%% called with `format' set to RGBA, but the process stops just before final conversion. -%% The R, G, B, and A components of each pixel are next scaled by the four 1D `?GL_CONVOLUTION_FILTER_SCALE' -%% parameters and biased by the four 1D `?GL_CONVOLUTION_FILTER_BIAS' parameters. (The -%% scale and bias parameters are set by {@link gl:convolutionParameterf/3} using the `?GL_CONVOLUTION_1D' -%% target and the names `?GL_CONVOLUTION_FILTER_SCALE' and `?GL_CONVOLUTION_FILTER_BIAS' -%% . The parameters themselves are vectors of four values that are applied to red, green, -%% blue, and alpha, in that order.) The R, G, B, and A values are not clamped to [0,1] at -%% any time during this process. -%% -%% Each pixel is then converted to the internal format specified by `Internalformat' . -%% This conversion simply maps the component values of the pixel (R, G, B, and A) to the -%% values included in the internal format (red, green, blue, alpha, luminance, and intensity). -%% The mapping is as follows: -%% -%% <table><tbody><tr><td>` Internal Format '</td><td>` Red '</td><td>` Green '</td> -%% <td>` Blue '</td><td>` Alpha '</td><td>` Luminance '</td><td>` Intensity ' -%% </td></tr></tbody><tbody><tr><td>`?GL_ALPHA'</td><td></td><td></td><td></td><td> A </td> -%% <td></td><td></td></tr><tr><td>`?GL_LUMINANCE'</td><td></td><td></td><td></td><td></td> -%% <td> R </td><td></td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td><td></td><td></td><td></td> -%% <td> A </td><td> R </td><td></td></tr><tr><td>`?GL_INTENSITY'</td><td></td><td></td><td> -%% </td><td></td><td></td><td> R </td></tr><tr><td>`?GL_RGB'</td><td> R </td><td> G </td> -%% <td> B </td><td></td><td></td><td></td></tr><tr><td>`?GL_RGBA'</td><td> R </td><td> -%% G </td><td> B </td><td> A </td><td></td><td></td></tr></tbody></table> -%% -%% The red, green, blue, alpha, luminance, and/or intensity components of the resulting -%% pixels are stored in floating-point rather than integer format. -%% -%% Pixel ordering is such that lower x screen coordinates correspond to lower `i' filter -%% image coordinates. -%% -%% Note that after a convolution is performed, the resulting color components are also scaled -%% by their corresponding `?GL_POST_CONVOLUTION_c_SCALE' parameters and biased by their -%% corresponding `?GL_POST_CONVOLUTION_c_BIAS' parameters (where `c' takes on the -%% values `RED', `GREEN', `BLUE', and `ALPHA'). These parameters are -%% set by {@link gl:pixelTransferf/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyConvolutionFilter1D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCopyConvolutionFilter1D.xml">external</a> documentation. -spec copyConvolutionFilter1D(Target, Internalformat, X, Y, Width) -> 'ok' when Target :: enum(),Internalformat :: enum(),X :: integer(),Y :: integer(),Width :: integer(). copyConvolutionFilter1D(Target,Internalformat,X,Y,Width) -> cast(5341, <<Target:?GLenum,Internalformat:?GLenum,X:?GLint,Y:?GLint,Width:?GLsizei>>). @@ -8614,50 +3351,7 @@ copyConvolutionFilter1D(Target,Internalformat,X,Y,Width) -> %% pixels from the current `?GL_READ_BUFFER' (rather than from main memory, as is the %% case for {@link gl:convolutionFilter2D/7} ). %% -%% The screen-aligned pixel rectangle with lower-left corner at ( `X' , `Y' ), width -%% `Width' and height `Height' is used to define the convolution filter. If any -%% pixels within this region are outside the window that is associated with the GL context, -%% the values obtained for those pixels are undefined. -%% -%% The pixels in the rectangle are processed exactly as if {@link gl:readPixels/7} had been -%% called with `format' set to RGBA, but the process stops just before final conversion. -%% The R, G, B, and A components of each pixel are next scaled by the four 2D `?GL_CONVOLUTION_FILTER_SCALE' -%% parameters and biased by the four 2D `?GL_CONVOLUTION_FILTER_BIAS' parameters. (The -%% scale and bias parameters are set by {@link gl:convolutionParameterf/3} using the `?GL_CONVOLUTION_2D' -%% target and the names `?GL_CONVOLUTION_FILTER_SCALE' and `?GL_CONVOLUTION_FILTER_BIAS' -%% . The parameters themselves are vectors of four values that are applied to red, green, -%% blue, and alpha, in that order.) The R, G, B, and A values are not clamped to [0,1] at -%% any time during this process. -%% -%% Each pixel is then converted to the internal format specified by `Internalformat' . -%% This conversion simply maps the component values of the pixel (R, G, B, and A) to the -%% values included in the internal format (red, green, blue, alpha, luminance, and intensity). -%% The mapping is as follows: -%% -%% <table><tbody><tr><td>` Internal Format '</td><td>` Red '</td><td>` Green '</td> -%% <td>` Blue '</td><td>` Alpha '</td><td>` Luminance '</td><td>` Intensity ' -%% </td></tr></tbody><tbody><tr><td>`?GL_ALPHA'</td><td></td><td></td><td></td><td> A </td> -%% <td></td><td></td></tr><tr><td>`?GL_LUMINANCE'</td><td></td><td></td><td></td><td></td> -%% <td> R </td><td></td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td><td></td><td></td><td></td> -%% <td> A </td><td> R </td><td></td></tr><tr><td>`?GL_INTENSITY'</td><td></td><td></td><td> -%% </td><td></td><td></td><td> R </td></tr><tr><td>`?GL_RGB'</td><td> R </td><td> G </td> -%% <td> B </td><td></td><td></td><td></td></tr><tr><td>`?GL_RGBA'</td><td> R </td><td> -%% G </td><td> B </td><td> A </td><td></td><td></td></tr></tbody></table> -%% -%% The red, green, blue, alpha, luminance, and/or intensity components of the resulting -%% pixels are stored in floating-point rather than integer format. -%% -%% Pixel ordering is such that lower x screen coordinates correspond to lower `i' filter -%% image coordinates, and lower y screen coordinates correspond to lower `j' filter -%% image coordinates. -%% -%% Note that after a convolution is performed, the resulting color components are also scaled -%% by their corresponding `?GL_POST_CONVOLUTION_c_SCALE' parameters and biased by their -%% corresponding `?GL_POST_CONVOLUTION_c_BIAS' parameters (where `c' takes on the -%% values `RED', `GREEN', `BLUE', and `ALPHA'). These parameters are -%% set by {@link gl:pixelTransferf/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyConvolutionFilter2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCopyConvolutionFilter2D.xml">external</a> documentation. -spec copyConvolutionFilter2D(Target, Internalformat, X, Y, Width, Height) -> 'ok' when Target :: enum(),Internalformat :: enum(),X :: integer(),Y :: integer(),Width :: integer(),Height :: integer(). copyConvolutionFilter2D(Target,Internalformat,X,Y,Width,Height) -> cast(5342, <<Target:?GLenum,Internalformat:?GLenum,X:?GLint,Y:?GLint,Width:?GLsizei,Height:?GLsizei>>). @@ -8669,21 +3363,7 @@ copyConvolutionFilter2D(Target,Internalformat,X,Y,Width,Height) -> %% specifications in `Format' and `Type' . No pixel transfer operations are performed %% on this image, but the relevant pixel storage modes are applied. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a convolution filter is requested, `Image' is -%% treated as a byte offset into the buffer object's data store. -%% -%% Color components that are present in `Format' but not included in the internal format -%% of the filter are returned as zero. The assignments of internal color components to the -%% components of `Format' are as follows. <table><tbody><tr><td>` Internal Component ' -%% </td><td>` Resulting Component '</td></tr></tbody><tbody><tr><td> Red </td><td> Red </td> -%% </tr><tr><td> Green </td><td> Green </td></tr><tr><td> Blue </td><td> Blue </td></tr><tr><td> -%% Alpha </td><td> Alpha </td></tr><tr><td> Luminance </td><td> Red </td></tr><tr><td> Intensity -%% </td><td> Red </td></tr></tbody></table> -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetConvolutionFilter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetConvolutionFilter.xml">external</a> documentation. -spec getConvolutionFilter(Target, Format, Type, Image) -> 'ok' when Target :: enum(),Format :: enum(),Type :: enum(),Image :: mem(). getConvolutionFilter(Target,Format,Type,Image) -> send_bin(Image), @@ -8695,34 +3375,7 @@ getConvolutionFilter(Target,Format,Type,Image) -> %% which convolution filter is queried. `Pname' determines which parameter is returned: %% %% -%% `?GL_CONVOLUTION_BORDER_MODE': The convolution border mode. See {@link gl:convolutionParameterf/3} -%% for a list of border modes. -%% -%% `?GL_CONVOLUTION_BORDER_COLOR': The current convolution border color. `Params' -%% must be a pointer to an array of four elements, which will receive the red, green, blue, -%% and alpha border colors. -%% -%% `?GL_CONVOLUTION_FILTER_SCALE': The current filter scale factors. `Params' -%% must be a pointer to an array of four elements, which will receive the red, green, blue, -%% and alpha filter scale factors in that order. -%% -%% `?GL_CONVOLUTION_FILTER_BIAS': The current filter bias factors. `Params' must -%% be a pointer to an array of four elements, which will receive the red, green, blue, and -%% alpha filter bias terms in that order. -%% -%% `?GL_CONVOLUTION_FORMAT': The current internal format. See {@link gl:convolutionFilter1D/6} -%% , {@link gl:convolutionFilter2D/7} , and {@link gl:separableFilter2D/8} for lists of allowable -%% formats. -%% -%% `?GL_CONVOLUTION_WIDTH': The current filter image width. -%% -%% `?GL_CONVOLUTION_HEIGHT': The current filter image height. -%% -%% `?GL_MAX_CONVOLUTION_WIDTH': The maximum acceptable filter image width. -%% -%% `?GL_MAX_CONVOLUTION_HEIGHT': The maximum acceptable filter image height. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetConvolutionParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetConvolutionParameter.xml">external</a> documentation. -spec getConvolutionParameterfv(Target, Pname) -> {float(),float(),float(),float()} when Target :: enum(),Pname :: enum(). getConvolutionParameterfv(Target,Pname) -> call(5344, <<Target:?GLenum,Pname:?GLenum>>). @@ -8738,52 +3391,7 @@ getConvolutionParameteriv(Target,Pname) -> %% ``gl:separableFilter2D'' builds a two-dimensional separable convolution filter kernel %% from two arrays of pixels. %% -%% The pixel arrays specified by ( `Width' , `Format' , `Type' , `Row' ) -%% and ( `Height' , `Format' , `Type' , `Column' ) are processed just as if -%% they had been passed to {@link gl:drawPixels/5} , but processing stops after the final expansion -%% to RGBA is completed. -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a convolution filter is specified, `Row' and `Column' -%% are treated as byte offsets into the buffer object's data store. -%% -%% Next, the R, G, B, and A components of all pixels in both arrays are scaled by the four -%% separable 2D `?GL_CONVOLUTION_FILTER_SCALE' parameters and biased by the four separable -%% 2D `?GL_CONVOLUTION_FILTER_BIAS' parameters. (The scale and bias parameters are set -%% by {@link gl:convolutionParameterf/3} using the `?GL_SEPARABLE_2D' target and the names -%% `?GL_CONVOLUTION_FILTER_SCALE' and `?GL_CONVOLUTION_FILTER_BIAS'. The parameters -%% themselves are vectors of four values that are applied to red, green, blue, and alpha, -%% in that order.) The R, G, B, and A values are not clamped to [0,1] at any time during -%% this process. -%% -%% Each pixel is then converted to the internal format specified by `Internalformat' . -%% This conversion simply maps the component values of the pixel (R, G, B, and A) to the -%% values included in the internal format (red, green, blue, alpha, luminance, and intensity). -%% The mapping is as follows: <table><tbody><tr><td>` Internal Format '</td><td>` Red ' -%% </td><td>` Green '</td><td>` Blue '</td><td>` Alpha '</td><td>` Luminance ' -%% </td><td>` Intensity '</td></tr></tbody><tbody><tr><td>`?GL_LUMINANCE'</td><td></td> -%% <td></td><td></td><td></td><td> R </td><td></td></tr><tr><td>`?GL_LUMINANCE_ALPHA'</td> -%% <td></td><td></td><td></td><td> A </td><td> R </td><td></td></tr><tr><td>`?GL_INTENSITY' -%% </td><td></td><td></td><td></td><td></td><td></td><td> R </td></tr><tr><td>`?GL_RGB'</td> -%% <td> R </td><td> G </td><td> B </td><td></td><td></td><td></td></tr><tr><td>`?GL_RGBA' -%% </td><td> R </td><td> G </td><td> B </td><td> A </td><td></td><td></td></tr></tbody></table> -%% -%% -%% The red, green, blue, alpha, luminance, and/or intensity components of the resulting -%% pixels are stored in floating-point rather than integer format. They form two one-dimensional -%% filter kernel images. The row image is indexed by coordinate `i' starting at zero -%% and increasing from left to right. Each location in the row image is derived from element -%% `i' of `Row' . The column image is indexed by coordinate `j' starting at -%% zero and increasing from bottom to top. Each location in the column image is derived from -%% element `j' of `Column' . -%% -%% Note that after a convolution is performed, the resulting color components are also scaled -%% by their corresponding `?GL_POST_CONVOLUTION_c_SCALE' parameters and biased by their -%% corresponding `?GL_POST_CONVOLUTION_c_BIAS' parameters (where `c' takes on the -%% values `RED', `GREEN', `BLUE', and `ALPHA'). These parameters are -%% set by {@link gl:pixelTransferf/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glSeparableFilter2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glSeparableFilter2D.xml">external</a> documentation. -spec separableFilter2D(Target, Internalformat, Width, Height, Format, Type, Row, Column) -> 'ok' when Target :: enum(),Internalformat :: enum(),Width :: integer(),Height :: integer(),Format :: enum(),Type :: enum(),Row :: offset()|mem(),Column :: offset()|mem(). separableFilter2D(Target,Internalformat,Width,Height,Format,Type,Row,Column) when is_integer(Row), is_integer(Column) -> cast(5346, <<Target:?GLenum,Internalformat:?GLenum,Width:?GLsizei,Height:?GLsizei,Format:?GLenum,Type:?GLenum,Row:?GLuint,Column:?GLuint>>); @@ -8798,21 +3406,7 @@ separableFilter2D(Target,Internalformat,Width,Height,Format,Type,Row,Column) -> %% the same width as the histogram. No pixel transfer operations are performed on this image, %% but pixel storage modes that are applicable to 1D images are honored. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a histogram table is requested, `Values' is treated -%% as a byte offset into the buffer object's data store. -%% -%% Color components that are requested in the specified `Format' , but which are not -%% included in the internal format of the histogram, are returned as zero. The assignments -%% of internal color components to the components requested by `Format' are: <table><tbody> -%% <tr><td>` Internal Component '</td><td>` Resulting Component '</td></tr></tbody> -%% <tbody><tr><td> Red </td><td> Red </td></tr><tr><td> Green </td><td> Green </td></tr><tr><td> -%% Blue </td><td> Blue </td></tr><tr><td> Alpha </td><td> Alpha </td></tr><tr><td> Luminance -%% </td><td> Red </td></tr></tbody></table> -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetHistogram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetHistogram.xml">external</a> documentation. -spec getHistogram(Target, Reset, Format, Type, Values) -> 'ok' when Target :: enum(),Reset :: 0|1,Format :: enum(),Type :: enum(),Values :: mem(). getHistogram(Target,Reset,Format,Type,Values) -> send_bin(Values), @@ -8826,19 +3420,7 @@ getHistogram(Target,Reset,Format,Type,Values) -> %% table) or `?GL_PROXY_HISTOGRAM' (to obtain information from the most recent proxy %% request) and one of the following values for the `Pname' argument: %% -%% <table><tbody><tr><td>` Parameter '</td><td>` Description '</td></tr></tbody><tbody> -%% <tr><td>`?GL_HISTOGRAM_WIDTH'</td><td> Histogram table width </td></tr><tr><td>`?GL_HISTOGRAM_FORMAT' -%% </td><td> Internal format </td></tr><tr><td>`?GL_HISTOGRAM_RED_SIZE'</td><td> Red -%% component counter size, in bits </td></tr><tr><td>`?GL_HISTOGRAM_GREEN_SIZE'</td><td> -%% Green component counter size, in bits </td></tr><tr><td>`?GL_HISTOGRAM_BLUE_SIZE'</td> -%% <td> Blue component counter size, in bits </td></tr><tr><td>`?GL_HISTOGRAM_ALPHA_SIZE' -%% </td><td> Alpha component counter size, in bits </td></tr><tr><td>`?GL_HISTOGRAM_LUMINANCE_SIZE' -%% </td><td> Luminance component counter size, in bits </td></tr><tr><td>`?GL_HISTOGRAM_SINK' -%% </td><td> Value of the `sink' parameter </td></tr></tbody></table> -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetHistogramParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetHistogramParameter.xml">external</a> documentation. -spec getHistogramParameterfv(Target, Pname) -> {float()} when Target :: enum(),Pname :: enum(). getHistogramParameterfv(Target,Pname) -> call(5349, <<Target:?GLenum,Pname:?GLenum>>). @@ -8857,26 +3439,7 @@ getHistogramParameteriv(Target,Pname) -> %% of the return values is determined by `Format' , and their type is determined by `Types' %% . %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while minimum and maximum pixel values are requested, `Values' -%% is treated as a byte offset into the buffer object's data store. -%% -%% No pixel transfer operations are performed on the return values, but pixel storage modes -%% that are applicable to one-dimensional images are performed. Color components that are -%% requested in the specified `Format' , but that are not included in the internal format -%% of the minmax table, are returned as zero. The assignment of internal color components -%% to the components requested by `Format' are as follows: -%% -%% <table><tbody><tr><td>` Internal Component '</td><td>` Resulting Component '</td> -%% </tr></tbody><tbody><tr><td> Red </td><td> Red </td></tr><tr><td> Green </td><td> Green </td> -%% </tr><tr><td> Blue </td><td> Blue </td></tr><tr><td> Alpha </td><td> Alpha </td></tr><tr><td> -%% Luminance </td><td> Red </td></tr></tbody></table> -%% -%% If `Reset' is `?GL_TRUE', the minmax table entries corresponding to the return -%% values are reset to their initial values. Minimum and maximum values that are not returned -%% are not modified, even if `Reset' is `?GL_TRUE'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetMinmax.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetMinmax.xml">external</a> documentation. -spec getMinmax(Target, Reset, Format, Types, Values) -> 'ok' when Target :: enum(),Reset :: 0|1,Format :: enum(),Types :: enum(),Values :: mem(). getMinmax(Target,Reset,Format,Types,Values) -> send_bin(Values), @@ -8887,14 +3450,7 @@ getMinmax(Target,Reset,Format,Types,Values) -> %% ``gl:getMinmaxParameter'' retrieves parameters for the current minmax table by setting `Pname' %% to one of the following values: %% -%% <table><tbody><tr><td>` Parameter '</td><td>` Description '</td></tr></tbody><tbody> -%% <tr><td>`?GL_MINMAX_FORMAT'</td><td> Internal format of minmax table </td></tr><tr><td> -%% `?GL_MINMAX_SINK'</td><td> Value of the `sink' parameter </td></tr></tbody></table> -%% -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetMinmaxParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetMinmaxParameter.xml">external</a> documentation. -spec getMinmaxParameterfv(Target, Pname) -> {float()} when Target :: enum(),Pname :: enum(). getMinmaxParameterfv(Target,Pname) -> call(5352, <<Target:?GLenum,Pname:?GLenum>>). @@ -8915,26 +3471,7 @@ getMinmaxParameteriv(Target,Pname) -> %% to be incremented.) If a histogram table entry is incremented beyond its maximum value, %% then its value becomes undefined. (This is not an error.) %% -%% Histogramming is performed only for RGBA pixels (though these may be specified originally -%% as color indices and converted to RGBA by index table lookup). Histogramming is enabled -%% with {@link gl:enable/1} and disabled with {@link gl:enable/1} . -%% -%% When `Target' is `?GL_HISTOGRAM', ``gl:histogram'' redefines the current -%% histogram table to have `Width' entries of the format specified by `Internalformat' -%% . The entries are indexed 0 through width-1, and all entries are initialized to zero. -%% The values in the previous histogram table, if any, are lost. If `Sink' is `?GL_TRUE' -%% , then pixels are discarded after histogramming; no further processing of the pixels takes -%% place, and no drawing, texture loading, or pixel readback will result. -%% -%% When `Target' is `?GL_PROXY_HISTOGRAM', ``gl:histogram'' computes all state -%% information as if the histogram table were to be redefined, but does not actually define -%% the new table. If the requested histogram table is too large to be supported, then the -%% state information will be set to zero. This provides a way to determine if a histogram -%% table with the given parameters can be supported. -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glHistogram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glHistogram.xml">external</a> documentation. -spec histogram(Target, Width, Internalformat, Sink) -> 'ok' when Target :: enum(),Width :: integer(),Internalformat :: enum(),Sink :: 0|1. histogram(Target,Width,Internalformat,Sink) -> cast(5354, <<Target:?GLenum,Width:?GLsizei,Internalformat:?GLenum,Sink:?GLboolean>>). @@ -8954,16 +3491,7 @@ histogram(Target,Width,Internalformat,Sink) -> %% calling {@link gl:enable/1} or {@link gl:enable/1} , respectively, with an argument of `?GL_MINMAX' %% . %% -%% ``gl:minmax'' redefines the current minmax table to have entries of the format specified -%% by `Internalformat' . The maximum element is initialized with the smallest possible -%% component values, and the minimum element is initialized with the largest possible component -%% values. The values in the previous minmax table, if any, are lost. If `Sink' is `?GL_TRUE' -%% , then pixels are discarded after minmax; no further processing of the pixels takes place, -%% and no drawing, texture loading, or pixel readback will result. -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMinmax.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMinmax.xml">external</a> documentation. -spec minmax(Target, Internalformat, Sink) -> 'ok' when Target :: enum(),Internalformat :: enum(),Sink :: 0|1. minmax(Target,Internalformat,Sink) -> cast(5355, <<Target:?GLenum,Internalformat:?GLenum,Sink:?GLboolean>>). @@ -8972,7 +3500,7 @@ minmax(Target,Internalformat,Sink) -> %% %% ``gl:resetHistogram'' resets all the elements of the current histogram table to zero. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glResetHistogram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glResetHistogram.xml">external</a> documentation. -spec resetHistogram(Target) -> 'ok' when Target :: enum(). resetHistogram(Target) -> cast(5356, <<Target:?GLenum>>). @@ -8983,7 +3511,7 @@ resetHistogram(Target) -> %% values: the ``maximum'' element receives the minimum possible component values, and the %% ``minimum'' element receives the maximum possible component values. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glResetMinmax.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glResetMinmax.xml">external</a> documentation. -spec resetMinmax(Target) -> 'ok' when Target :: enum(). resetMinmax(Target) -> cast(5357, <<Target:?GLenum>>). @@ -8994,7 +3522,7 @@ resetMinmax(Target) -> %% affect. The number of texture units an implementation supports is implementation dependent, %% but must be at least 80. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glActiveTexture.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glActiveTexture.xhtml">external</a> documentation. -spec activeTexture(Texture) -> 'ok' when Texture :: enum(). activeTexture(Texture) -> cast(5358, <<Texture:?GLenum>>). @@ -9005,22 +3533,7 @@ activeTexture(Texture) -> %% locations to generate antialiasing effects. Multisampling transparently antialiases points, %% lines, polygons, and images if it is enabled. %% -%% `Value' is used in constructing a temporary mask used in determining which samples -%% will be used in resolving the final fragment color. This mask is bitwise-anded with the -%% coverage mask generated from the multisampling computation. If the `Invert' flag -%% is set, the temporary mask is inverted (all bits flipped) and then the bitwise-and is -%% computed. -%% -%% If an implementation does not have any multisample buffers available, or multisampling -%% is disabled, rasterization occurs with only a single sample computing a pixel's final -%% RGB color. -%% -%% Provided an implementation supports multisample buffers, and multisampling is enabled, -%% then a pixel's final color is generated by combining several samples per pixel. Each sample -%% contains color, depth, and stencil information, allowing those operations to be performed -%% on each sample. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glSampleCoverage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glSampleCoverage.xhtml">external</a> documentation. -spec sampleCoverage(Value, Invert) -> 'ok' when Value :: clamp(),Invert :: 0|1. sampleCoverage(Value,Invert) -> cast(5359, <<Value:?GLclampf,Invert:?GLboolean>>). @@ -9029,56 +3542,7 @@ sampleCoverage(Value,Invert) -> %% %% Texturing allows elements of an image array to be read by shaders. %% -%% ``gl:compressedTexImage3D'' loads a previously defined, and retrieved, compressed three-dimensional -%% texture image if `Target' is `?GL_TEXTURE_3D' (see {@link gl:texImage3D/10} ). -%% -%% If `Target' is `?GL_TEXTURE_2D_ARRAY', `Data' is treated as an array of -%% compressed 2D textures. -%% -%% If `Target' is `?GL_PROXY_TEXTURE_3D' or `?GL_PROXY_TEXTURE_2D_ARRAY', -%% no data is read from `Data' , but all of the texture image state is recalculated, -%% checked for consistency, and checked against the implementation's capabilities. If the -%% implementation cannot handle a texture of the requested texture size, it sets all of the -%% image state to 0, but does not generate an error (see {@link gl:getError/0} ). To query -%% for an entire mipmap array, use an image array level greater than or equal to 1. -%% -%% `Internalformat' must be a known compressed image format (such as `?GL_RGTC') -%% or an extension-specified compressed-texture format. When a texture is loaded with {@link gl:texImage2D/9} -%% using a generic compressed texture format (e.g., `?GL_COMPRESSED_RGB'), the GL selects -%% from one of its extensions supporting compressed textures. In order to load the compressed -%% texture image using ``gl:compressedTexImage3D'', query the compressed texture image's -%% size and format using {@link gl:getTexLevelParameterfv/3} . -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% If the compressed data are arranged into fixed-size blocks of texels, the pixel storage -%% modes can be used to select a sub-rectangle from a larger containing rectangle. These -%% pixel storage modes operate in the same way as they do for {@link gl:texImage1D/8} . In -%% the following description, denote by b s, b w, b h, and b d, the values of pixel storage -%% modes `?GL_UNPACK_COMPRESSED_BLOCK_SIZE', `?GL_UNPACK_COMPRESSED_BLOCK_WIDTH', `?GL_UNPACK_COMPRESSED_BLOCK_HEIGHT' -%% , and `?GL_UNPACK_COMPRESSED_BLOCK_DEPTH', respectively. b s is the compressed block -%% size in bytes; b w, b h, and b d are the compressed block width, height, and depth -%% in pixels. -%% -%% By default the pixel storage modes `?GL_UNPACK_ROW_LENGTH', `?GL_UNPACK_SKIP_ROWS' -%% , `?GL_UNPACK_SKIP_PIXELS', `?GL_UNPACK_IMAGE_HEIGHT' and `?GL_UNPACK_SKIP_IMAGES' -%% are ignored for compressed images. To enable `?GL_UNPACK_SKIP_PIXELS' and `?GL_UNPACK_ROW_LENGTH' -%% , b s and b w must both be non-zero. To also enable `?GL_UNPACK_SKIP_ROWS' and `?GL_UNPACK_IMAGE_HEIGHT' -%% , b h must be non-zero. To also enable `?GL_UNPACK_SKIP_IMAGES', b d must be non-zero. -%% All parameters must be consistent with the compressed format to produce the desired results. -%% -%% -%% When selecting a sub-rectangle from a compressed image: the value of `?GL_UNPACK_SKIP_PIXELS' -%% must be a multiple of b w;the value of `?GL_UNPACK_SKIP_ROWS' must be a multiple -%% of b w;the value of `?GL_UNPACK_SKIP_IMAGES' must be a multiple of b w. -%% -%% `ImageSize' must be equal to: -%% -%% b s×|width b/w|×|height b/h|×|depth b/d| -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompressedTexImage3D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCompressedTexImage3D.xhtml">external</a> documentation. -spec compressedTexImage3D(Target, Level, Internalformat, Width, Height, Depth, Border, ImageSize, Data) -> 'ok' when Target :: enum(),Level :: integer(),Internalformat :: enum(),Width :: integer(),Height :: integer(),Depth :: integer(),Border :: integer(),ImageSize :: integer(),Data :: offset()|mem(). compressedTexImage3D(Target,Level,Internalformat,Width,Height,Depth,Border,ImageSize,Data) when is_integer(Data) -> cast(5360, <<Target:?GLenum,Level:?GLint,Internalformat:?GLenum,Width:?GLsizei,Height:?GLsizei,Depth:?GLsizei,Border:?GLint,ImageSize:?GLsizei,Data:?GLuint>>); @@ -9090,57 +3554,7 @@ compressedTexImage3D(Target,Level,Internalformat,Width,Height,Depth,Border,Image %% %% Texturing allows elements of an image array to be read by shaders. %% -%% ``gl:compressedTexImage2D'' loads a previously defined, and retrieved, compressed two-dimensional -%% texture image if `Target' is `?GL_TEXTURE_2D', or one of the cube map faces -%% such as `?GL_TEXTURE_CUBE_MAP_POSITIVE_X'. (see {@link gl:texImage2D/9} ). -%% -%% If `Target' is `?GL_TEXTURE_1D_ARRAY', `Data' is treated as an array of -%% compressed 1D textures. -%% -%% If `Target' is `?GL_PROXY_TEXTURE_2D', `?GL_PROXY_TEXTURE_1D_ARRAY' or `?GL_PROXY_CUBE_MAP' -%% , no data is read from `Data' , but all of the texture image state is recalculated, -%% checked for consistency, and checked against the implementation's capabilities. If the -%% implementation cannot handle a texture of the requested texture size, it sets all of the -%% image state to 0, but does not generate an error (see {@link gl:getError/0} ). To query -%% for an entire mipmap array, use an image array level greater than or equal to 1. -%% -%% `Internalformat' must be a known compressed image format (such as `?GL_RGTC') -%% or an extension-specified compressed-texture format. When a texture is loaded with {@link gl:texImage2D/9} -%% using a generic compressed texture format (e.g., `?GL_COMPRESSED_RGB'), the GL selects -%% from one of its extensions supporting compressed textures. In order to load the compressed -%% texture image using ``gl:compressedTexImage2D'', query the compressed texture image's -%% size and format using {@link gl:getTexLevelParameterfv/3} . -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% If the compressed data are arranged into fixed-size blocks of texels, the pixel storage -%% modes can be used to select a sub-rectangle from a larger containing rectangle. These -%% pixel storage modes operate in the same way as they do for {@link gl:texImage2D/9} . In -%% the following description, denote by b s, b w, b h, and b d, the values of pixel storage -%% modes `?GL_UNPACK_COMPRESSED_BLOCK_SIZE', `?GL_UNPACK_COMPRESSED_BLOCK_WIDTH', `?GL_UNPACK_COMPRESSED_BLOCK_HEIGHT' -%% , and `?GL_UNPACK_COMPRESSED_BLOCK_DEPTH', respectively. b s is the compressed block -%% size in bytes; b w, b h, and b d are the compressed block width, height, and depth -%% in pixels. -%% -%% By default the pixel storage modes `?GL_UNPACK_ROW_LENGTH', `?GL_UNPACK_SKIP_ROWS' -%% , `?GL_UNPACK_SKIP_PIXELS', `?GL_UNPACK_IMAGE_HEIGHT' and `?GL_UNPACK_SKIP_IMAGES' -%% are ignored for compressed images. To enable `?GL_UNPACK_SKIP_PIXELS' and `?GL_UNPACK_ROW_LENGTH' -%% , b s and b w must both be non-zero. To also enable `?GL_UNPACK_SKIP_ROWS' and `?GL_UNPACK_IMAGE_HEIGHT' -%% , b h must be non-zero. To also enable `?GL_UNPACK_SKIP_IMAGES', b d must be non-zero. -%% All parameters must be consistent with the compressed format to produce the desired results. -%% -%% -%% When selecting a sub-rectangle from a compressed image: the value of `?GL_UNPACK_SKIP_PIXELS' -%% must be a multiple of b w;the value of `?GL_UNPACK_SKIP_ROWS' must be a multiple -%% of b w. -%% -%% `ImageSize' must be equal to: -%% -%% b s×|width b/w|×|height b/h| -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompressedTexImage2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCompressedTexImage2D.xhtml">external</a> documentation. -spec compressedTexImage2D(Target, Level, Internalformat, Width, Height, Border, ImageSize, Data) -> 'ok' when Target :: enum(),Level :: integer(),Internalformat :: enum(),Width :: integer(),Height :: integer(),Border :: integer(),ImageSize :: integer(),Data :: offset()|mem(). compressedTexImage2D(Target,Level,Internalformat,Width,Height,Border,ImageSize,Data) when is_integer(Data) -> cast(5362, <<Target:?GLenum,Level:?GLint,Internalformat:?GLenum,Width:?GLsizei,Height:?GLsizei,Border:?GLint,ImageSize:?GLsizei,Data:?GLuint>>); @@ -9152,52 +3566,7 @@ compressedTexImage2D(Target,Level,Internalformat,Width,Height,Border,ImageSize,D %% %% Texturing allows elements of an image array to be read by shaders. %% -%% ``gl:compressedTexImage1D'' loads a previously defined, and retrieved, compressed one-dimensional -%% texture image if `Target' is `?GL_TEXTURE_1D' (see {@link gl:texImage1D/8} ). -%% -%% If `Target' is `?GL_PROXY_TEXTURE_1D', no data is read from `Data' , but -%% all of the texture image state is recalculated, checked for consistency, and checked against -%% the implementation's capabilities. If the implementation cannot handle a texture of the -%% requested texture size, it sets all of the image state to 0, but does not generate an -%% error (see {@link gl:getError/0} ). To query for an entire mipmap array, use an image array -%% level greater than or equal to 1. -%% -%% `Internalformat' must be an extension-specified compressed-texture format. When a -%% texture is loaded with {@link gl:texImage1D/8} using a generic compressed texture format -%% (e.g., `?GL_COMPRESSED_RGB') the GL selects from one of its extensions supporting -%% compressed textures. In order to load the compressed texture image using ``gl:compressedTexImage1D'' -%% , query the compressed texture image's size and format using {@link gl:getTexLevelParameterfv/3} -%% . -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% If the compressed data are arranged into fixed-size blocks of texels, the pixel storage -%% modes can be used to select a sub-rectangle from a larger containing rectangle. These -%% pixel storage modes operate in the same way as they do for {@link gl:texImage1D/8} . In -%% the following description, denote by b s, b w, b h, and b d, the values of pixel storage -%% modes `?GL_UNPACK_COMPRESSED_BLOCK_SIZE', `?GL_UNPACK_COMPRESSED_BLOCK_WIDTH', `?GL_UNPACK_COMPRESSED_BLOCK_HEIGHT' -%% , and `?GL_UNPACK_COMPRESSED_BLOCK_DEPTH', respectively. b s is the compressed block -%% size in bytes; b w, b h, and b d are the compressed block width, height, and depth -%% in pixels. -%% -%% By default the pixel storage modes `?GL_UNPACK_ROW_LENGTH', `?GL_UNPACK_SKIP_ROWS' -%% , `?GL_UNPACK_SKIP_PIXELS', `?GL_UNPACK_IMAGE_HEIGHT' and `?GL_UNPACK_SKIP_IMAGES' -%% are ignored for compressed images. To enable `?GL_UNPACK_SKIP_PIXELS' and `?GL_UNPACK_ROW_LENGTH' -%% , b s and b w must both be non-zero. To also enable `?GL_UNPACK_SKIP_ROWS' and `?GL_UNPACK_IMAGE_HEIGHT' -%% , b h must be non-zero. To also enable `?GL_UNPACK_SKIP_IMAGES', b d must be non-zero. -%% All parameters must be consistent with the compressed format to produce the desired results. -%% -%% -%% When selecting a sub-rectangle from a compressed image: the value of `?GL_UNPACK_SKIP_PIXELS' -%% must be a multiple of b w; -%% -%% `ImageSize' must be equal to: -%% -%% b s×|width b/w| -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompressedTexImage1D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCompressedTexImage1D.xhtml">external</a> documentation. -spec compressedTexImage1D(Target, Level, Internalformat, Width, Border, ImageSize, Data) -> 'ok' when Target :: enum(),Level :: integer(),Internalformat :: enum(),Width :: integer(),Border :: integer(),ImageSize :: integer(),Data :: offset()|mem(). compressedTexImage1D(Target,Level,Internalformat,Width,Border,ImageSize,Data) when is_integer(Data) -> cast(5364, <<Target:?GLenum,Level:?GLint,Internalformat:?GLenum,Width:?GLsizei,Border:?GLint,ImageSize:?GLsizei,Data:?GLuint>>); @@ -9209,25 +3578,7 @@ compressedTexImage1D(Target,Level,Internalformat,Width,Border,ImageSize,Data) -> %% %% Texturing allows elements of an image array to be read by shaders. %% -%% ``gl:compressedTexSubImage3D'' redefines a contiguous subregion of an existing three-dimensional -%% texture image. The texels referenced by `Data' replace the portion of the existing -%% texture array with x indices `Xoffset' and xoffset+width-1, and the y indices `Yoffset' -%% and yoffset+height-1, and the z indices `Zoffset' and zoffset+depth-1, inclusive. -%% This region may not include any texels outside the range of the texture array as it was -%% originally specified. It is not an error to specify a subtexture with width of 0, but -%% such a specification has no effect. -%% -%% `Internalformat' must be a known compressed image format (such as `?GL_RGTC') -%% or an extension-specified compressed-texture format. The `Format' of the compressed -%% texture image is selected by the GL implementation that compressed it (see {@link gl:texImage3D/10} -%% ) and should be queried at the time the texture was compressed with {@link gl:getTexLevelParameterfv/3} -%% . -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompressedTexSubImage3D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCompressedTexSubImage3D.xhtml">external</a> documentation. -spec compressedTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),Yoffset :: integer(),Zoffset :: integer(),Width :: integer(),Height :: integer(),Depth :: integer(),Format :: enum(),ImageSize :: integer(),Data :: offset()|mem(). compressedTexSubImage3D(Target,Level,Xoffset,Yoffset,Zoffset,Width,Height,Depth,Format,ImageSize,Data) when is_integer(Data) -> cast(5366, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,Yoffset:?GLint,Zoffset:?GLint,Width:?GLsizei,Height:?GLsizei,Depth:?GLsizei,Format:?GLenum,ImageSize:?GLsizei,Data:?GLuint>>); @@ -9239,24 +3590,7 @@ compressedTexSubImage3D(Target,Level,Xoffset,Yoffset,Zoffset,Width,Height,Depth, %% %% Texturing allows elements of an image array to be read by shaders. %% -%% ``gl:compressedTexSubImage2D'' redefines a contiguous subregion of an existing two-dimensional -%% texture image. The texels referenced by `Data' replace the portion of the existing -%% texture array with x indices `Xoffset' and xoffset+width-1, and the y indices `Yoffset' -%% and yoffset+height-1, inclusive. This region may not include any texels outside the -%% range of the texture array as it was originally specified. It is not an error to specify -%% a subtexture with width of 0, but such a specification has no effect. -%% -%% `Internalformat' must be a known compressed image format (such as `?GL_RGTC') -%% or an extension-specified compressed-texture format. The `Format' of the compressed -%% texture image is selected by the GL implementation that compressed it (see {@link gl:texImage2D/9} -%% ) and should be queried at the time the texture was compressed with {@link gl:getTexLevelParameterfv/3} -%% . -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompressedTexSubImage2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCompressedTexSubImage2D.xhtml">external</a> documentation. -spec compressedTexSubImage2D(Target, Level, Xoffset, Yoffset, Width, Height, Format, ImageSize, Data) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),Yoffset :: integer(),Width :: integer(),Height :: integer(),Format :: enum(),ImageSize :: integer(),Data :: offset()|mem(). compressedTexSubImage2D(Target,Level,Xoffset,Yoffset,Width,Height,Format,ImageSize,Data) when is_integer(Data) -> cast(5368, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,Yoffset:?GLint,Width:?GLsizei,Height:?GLsizei,Format:?GLenum,ImageSize:?GLsizei,Data:?GLuint>>); @@ -9268,24 +3602,7 @@ compressedTexSubImage2D(Target,Level,Xoffset,Yoffset,Width,Height,Format,ImageSi %% %% Texturing allows elements of an image array to be read by shaders. %% -%% ``gl:compressedTexSubImage1D'' redefines a contiguous subregion of an existing one-dimensional -%% texture image. The texels referenced by `Data' replace the portion of the existing -%% texture array with x indices `Xoffset' and xoffset+width-1, inclusive. This region -%% may not include any texels outside the range of the texture array as it was originally -%% specified. It is not an error to specify a subtexture with width of 0, but such a specification -%% has no effect. -%% -%% `Internalformat' must be a known compressed image format (such as `?GL_RGTC') -%% or an extension-specified compressed-texture format. The `Format' of the compressed -%% texture image is selected by the GL implementation that compressed it (see {@link gl:texImage1D/8} -%% ), and should be queried at the time the texture was compressed with {@link gl:getTexLevelParameterfv/3} -%% . -%% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is specified, `Data' is treated -%% as a byte offset into the buffer object's data store. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompressedTexSubImage1D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCompressedTexSubImage1D.xhtml">external</a> documentation. -spec compressedTexSubImage1D(Target, Level, Xoffset, Width, Format, ImageSize, Data) -> 'ok' when Target :: enum(),Level :: integer(),Xoffset :: integer(),Width :: integer(),Format :: enum(),ImageSize :: integer(),Data :: offset()|mem(). compressedTexSubImage1D(Target,Level,Xoffset,Width,Format,ImageSize,Data) when is_integer(Data) -> cast(5370, <<Target:?GLenum,Level:?GLint,Xoffset:?GLint,Width:?GLsizei,Format:?GLenum,ImageSize:?GLsizei,Data:?GLuint>>); @@ -9302,20 +3619,7 @@ compressedTexSubImage1D(Target,Level,Xoffset,Width,Format,ImageSize,Data) -> %% ), or {@link gl:texImage3D/10} (`?GL_TEXTURE_3D'). `Lod' specifies the level-of-detail %% number of the desired image. %% -%% If a non-zero named buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target -%% (see {@link gl:bindBuffer/2} ) while a texture image is requested, `Img' is treated -%% as a byte offset into the buffer object's data store. -%% -%% To minimize errors, first verify that the texture is compressed by calling {@link gl:getTexLevelParameterfv/3} -%% with argument `?GL_TEXTURE_COMPRESSED'. If the texture is compressed, then determine -%% the amount of memory required to store the compressed texture by calling {@link gl:getTexLevelParameterfv/3} -%% with argument `?GL_TEXTURE_COMPRESSED_IMAGE_SIZE'. Finally, retrieve the internal -%% format of the texture by calling {@link gl:getTexLevelParameterfv/3} with argument `?GL_TEXTURE_INTERNAL_FORMAT' -%% . To store the texture for later use, associate the internal format and size with the -%% retrieved texture image. These data can be used by the respective texture or subtexture -%% loading routine used for loading `Target' textures. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetCompressedTexImage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetCompressedTexImage.xhtml">external</a> documentation. -spec getCompressedTexImage(Target, Lod, Img) -> 'ok' when Target :: enum(),Lod :: integer(),Img :: mem(). getCompressedTexImage(Target,Lod,Img) -> send_bin(Img), @@ -9328,7 +3632,7 @@ getCompressedTexImage(Target,Lod,Img) -> %% or {@link gl:enableClientState/1} , respectively, when called with a parameter of `?GL_TEXTURE_COORD_ARRAY' %% . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClientActiveTexture.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glClientActiveTexture.xml">external</a> documentation. -spec clientActiveTexture(Texture) -> 'ok' when Texture :: enum(). clientActiveTexture(Texture) -> cast(5373, <<Texture:?GLenum>>). @@ -9341,12 +3645,7 @@ clientActiveTexture(Texture) -> %% t r 1), %% and ``gl:multiTexCoord4'' defines all four components explicitly as (s t r q). %% -%% The current texture coordinates are part of the data that is associated with each vertex -%% and with the current raster position. Initially, the values for (s t r q) are (0 0 0 1). -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMultiTexCoord.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMultiTexCoord.xml">external</a> documentation. -spec multiTexCoord1d(Target, S) -> 'ok' when Target :: enum(),S :: float(). multiTexCoord1d(Target,S) -> cast(5374, <<Target:?GLenum,0:32,S:?GLdouble>>). @@ -9511,19 +3810,7 @@ multiTexCoord4sv(Target,{S,T,R,Q}) -> multiTexCoord4s(Target,S,T,R,Q). %% specified by `M' . The current matrix is the projection matrix, modelview matrix, %% or texture matrix, depending on the current matrix mode (see {@link gl:matrixMode/1} ). %% -%% The current matrix, M, defines a transformation of coordinates. For instance, assume -%% M refers to the modelview matrix. If v=(v[0] v[1] v[2] v[3]) is the set of object coordinates of a vertex, -%% and `M' points to an array of 16 single- or double-precision floating-point values -%% m={m[0] m[1] ... m[15]}, then the modelview transformation M(v) does the following: -%% -%% M(v)=(m[0] m[1] m[2] m[3] m[4] m[5] m[6] m[7] m[8] m[9] m[10] m[11] m[12] m[13] m[14] m[15])×(v[0] v[1] v[2] v[3]) -%% -%% Projection and texture transformations are similarly defined. -%% -%% Calling ``gl:loadTransposeMatrix'' with matrix M is identical in operation to {@link gl:loadMatrixd/1} -%% with M T, where T represents the transpose. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLoadTransposeMatrix.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glLoadTransposeMatrix.xml">external</a> documentation. -spec loadTransposeMatrixf(M) -> 'ok' when M :: matrix(). loadTransposeMatrixf({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16}) -> cast(5390, <<M1:?GLfloat,M2:?GLfloat,M3:?GLfloat,M4:?GLfloat,M5:?GLfloat,M6:?GLfloat,M7:?GLfloat,M8:?GLfloat,M9:?GLfloat,M10:?GLfloat,M11:?GLfloat,M12:?GLfloat,M13:?GLfloat,M14:?GLfloat,M15:?GLfloat,M16:?GLfloat>>); @@ -9543,10 +3830,7 @@ loadTransposeMatrixd({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}) -> %% ``gl:multTransposeMatrix'' multiplies the current matrix with the one specified using `M' %% , and replaces the current matrix with the product. %% -%% The current matrix is determined by the current matrix mode (see {@link gl:matrixMode/1} ). -%% It is either the projection matrix, modelview matrix, or the texture matrix. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMultTransposeMatrix.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMultTransposeMatrix.xml">external</a> documentation. -spec multTransposeMatrixf(M) -> 'ok' when M :: matrix(). multTransposeMatrixf({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16}) -> cast(5392, <<M1:?GLfloat,M2:?GLfloat,M3:?GLfloat,M4:?GLfloat,M5:?GLfloat,M6:?GLfloat,M7:?GLfloat,M8:?GLfloat,M9:?GLfloat,M10:?GLfloat,M11:?GLfloat,M12:?GLfloat,M13:?GLfloat,M14:?GLfloat,M15:?GLfloat,M16:?GLfloat>>); @@ -9568,72 +3852,7 @@ multTransposeMatrixd({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}) -> %% is initially disabled. Use {@link gl:enable/1} and {@link gl:enable/1} with argument `?GL_BLEND' %% to enable and disable blending. %% -%% ``gl:blendFuncSeparate'' defines the operation of blending for all draw buffers when -%% it is enabled. ``gl:blendFuncSeparatei'' defines the operation of blending for a single -%% draw buffer specified by `Buf' when enabled for that draw buffer. `SrcRGB' specifies -%% which method is used to scale the source RGB-color components. `DstRGB' specifies -%% which method is used to scale the destination RGB-color components. Likewise, `SrcAlpha' -%% specifies which method is used to scale the source alpha color component, and `DstAlpha' -%% specifies which method is used to scale the destination alpha component. The possible -%% methods are described in the following table. Each method defines four scale factors, -%% one each for red, green, blue, and alpha. -%% -%% In the table and in subsequent equations, first source, second source and destination -%% color components are referred to as (R s0 G s0 B s0 A s0), (R s1 G s1 B s1 A s1), and (R d G d B d A d), respectively. The color specified by {@link gl:blendColor/4} -%% is referred to as (R c G c B c A c). They are understood to have integer values between 0 and (k R k G k B -%% k A), where -%% -%% k c=2(m c)-1 -%% -%% and (m R m G m B m A) is the number of red, green, blue, and alpha bitplanes. -%% -%% Source and destination scale factors are referred to as (s R s G s B s A) and (d R d G d B d A). All scale factors have -%% range [0 1]. -%% -%% <table><tbody><tr><td>` Parameter '</td><td>` RGB Factor '</td><td>` Alpha Factor ' -%% </td></tr></tbody><tbody><tr><td>`?GL_ZERO'</td><td>(0 0 0)</td><td> 0</td></tr><tr><td>`?GL_ONE' -%% </td><td>(1 1 1)</td><td> 1</td></tr><tr><td>`?GL_SRC_COLOR'</td><td>(R s0 k/R G s0 k/G B s0 -%% k/B)</td><td> A s0 k/A</td> -%% </tr><tr><td>`?GL_ONE_MINUS_SRC_COLOR'</td><td>(1 1 1 1)-(R s0 k/R G s0 k/G B s0 k/B)</td><td> 1-A s0 k/A</td></tr><tr><td> -%% `?GL_DST_COLOR'</td><td>(R d k/R G d k/G B d k/B)</td><td> A d k/A</td></tr><tr><td>`?GL_ONE_MINUS_DST_COLOR' -%% </td><td>(1 1 1)-(R d k/R G d k/G B d k/B)</td><td> 1-A d k/A</td></tr><tr><td>`?GL_SRC_ALPHA'</td><td>(A s0 k/A A s0 -%% k/A A s0 k/A)</td><td> A -%% s0 k/A</td></tr><tr><td>`?GL_ONE_MINUS_SRC_ALPHA'</td><td>(1 1 1)-(A s0 k/A A s0 k/A A s0 k/A -%% )</td><td> 1-A s0 k/A</td></tr> -%% <tr><td>`?GL_DST_ALPHA'</td><td>(A d k/A A d k/A A d k/A)</td><td> A d k/A</td></tr><tr><td>`?GL_ONE_MINUS_DST_ALPHA' -%% </td><td>(1 1 1)-(A d k/A A d k/A A d k/A)</td><td> 1-A d k/A</td></tr><tr><td>`?GL_CONSTANT_COLOR'</td><td>(R c G c -%% B c)</td><td> -%% A c</td></tr><tr><td>`?GL_ONE_MINUS_CONSTANT_COLOR'</td><td>(1 1 1)-(R c G c B c)</td><td> 1-A c</td></tr> -%% <tr><td>`?GL_CONSTANT_ALPHA'</td><td>(A c A c A c)</td><td> A c</td></tr><tr><td>`?GL_ONE_MINUS_CONSTANT_ALPHA' -%% </td><td>(1 1 1)-(A c A c A c)</td><td> 1-A c</td></tr><tr><td>`?GL_SRC_ALPHA_SATURATE'</td><td>(i i i)</td><td> -%% 1</td></tr><tr><td>`?GL_SRC1_COLOR'</td><td>(R s1 k/R G s1 k/G B s1 k/B)</td><td> A s1 k/A</td></tr><tr><td>`?GL_ONE_MINUS_SRC_COLOR' -%% </td><td>(1 1 1 1)-(R s1 k/R G s1 k/G B s1 k/B)</td><td> 1-A s1 k/A</td></tr><tr><td>`?GL_SRC1_ALPHA'</td><td>(A s1 k/A A -%% s1 k/A A s1 k/A)</td><td> A -%% s1 k/A</td></tr><tr><td>`?GL_ONE_MINUS_SRC_ALPHA'</td><td>(1 1 1)-(A s1 k/A A s1 k/A A s1 k/A -%% )</td><td> 1-A s1 k/A</td></tr> -%% </tbody></table> -%% -%% In the table, -%% -%% i=min(A s 1-(A d)) -%% -%% To determine the blended RGBA values of a pixel, the system uses the following equations: -%% -%% -%% R d=min(k R R s s R+R d d R) G d=min(k G G s s G+G d d G) B d=min(k B B s s B+B d d B) A d=min(k A A s s A+A d d A) -%% -%% Despite the apparent precision of the above equations, blending arithmetic is not exactly -%% specified, because blending operates with imprecise integer color values. However, a blend -%% factor that should be equal to 1 is guaranteed not to modify its multiplicand, and a blend -%% factor equal to 0 reduces its multiplicand to 0. For example, when `SrcRGB' is `?GL_SRC_ALPHA' -%% , `DstRGB' is `?GL_ONE_MINUS_SRC_ALPHA', and A s is equal to k A, the equations -%% reduce to simple replacement: -%% -%% R d=R s G d=G s B d=B s A d=A s -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBlendFuncSeparate.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendFuncSeparate.xhtml">external</a> documentation. -spec blendFuncSeparate(SfactorRGB, DfactorRGB, SfactorAlpha, DfactorAlpha) -> 'ok' when SfactorRGB :: enum(),DfactorRGB :: enum(),SfactorAlpha :: enum(),DfactorAlpha :: enum(). blendFuncSeparate(SfactorRGB,DfactorRGB,SfactorAlpha,DfactorAlpha) -> cast(5394, <<SfactorRGB:?GLenum,DfactorRGB:?GLenum,SfactorAlpha:?GLenum,DfactorAlpha:?GLenum>>). @@ -9646,19 +3865,7 @@ blendFuncSeparate(SfactorRGB,DfactorRGB,SfactorAlpha,DfactorAlpha) -> %% normals, and colors and use them to construct a sequence of primitives with a single call %% to ``gl:multiDrawArrays''. %% -%% ``gl:multiDrawArrays'' behaves identically to {@link gl:drawArrays/3} except that `Primcount' -%% separate ranges of elements are specified instead. -%% -%% When ``gl:multiDrawArrays'' is called, it uses `Count' sequential elements from -%% each enabled array to construct a sequence of geometric primitives, beginning with element -%% `First' . `Mode' specifies what kind of primitives are constructed, and how the -%% array elements construct those primitives. -%% -%% Vertex attributes that are modified by ``gl:multiDrawArrays'' have an unspecified value -%% after ``gl:multiDrawArrays'' returns. Attributes that aren't modified remain well defined. -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMultiDrawArrays.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glMultiDrawArrays.xhtml">external</a> documentation. -spec multiDrawArrays(Mode, First, Count) -> 'ok' when Mode :: enum(),First :: [integer()]|mem(),Count :: [integer()]|mem(). multiDrawArrays(Mode,First,Count) when is_list(First), is_list(Count) -> FirstLen = length(First), @@ -9677,15 +3884,7 @@ multiDrawArrays(Mode,First,Count) -> %% %% The following values are accepted for `Pname' : %% -%% `?GL_POINT_FADE_THRESHOLD_SIZE': `Params' is a single floating-point value that -%% specifies the threshold value to which point sizes are clamped if they exceed the specified -%% value. The default value is 1.0. -%% -%% `?GL_POINT_SPRITE_COORD_ORIGIN': `Params' is a single enum specifying the point -%% sprite texture coordinate origin, either `?GL_LOWER_LEFT' or `?GL_UPPER_LEFT'. -%% The default value is `?GL_UPPER_LEFT'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPointParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPointParameter.xhtml">external</a> documentation. -spec pointParameterf(Pname, Param) -> 'ok' when Pname :: enum(),Param :: float(). pointParameterf(Pname,Param) -> cast(5397, <<Pname:?GLenum,Param:?GLfloat>>). @@ -9716,7 +3915,7 @@ pointParameteriv(Pname,Params) -> %% the current raster position. The value specified is interpolated and used in computing %% the fog color (see {@link gl:fogf/2} ). %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFogCoord.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFogCoord.xml">external</a> documentation. -spec fogCoordf(Coord) -> 'ok' when Coord :: float(). fogCoordf(Coord) -> cast(5401, <<Coord:?GLfloat>>). @@ -9742,22 +3941,7 @@ fogCoorddv({Coord}) -> fogCoordd(Coord). %% specifies the byte stride from one fog coordinate to the next, allowing vertices and %% attributes to be packed into a single array or stored in separate arrays. %% -%% If a non-zero named buffer object is bound to the `?GL_ARRAY_BUFFER' target (see {@link gl:bindBuffer/2} -%% ) while a fog coordinate array is specified, `Pointer' is treated as a byte offset -%% into the buffer object's data store. Also, the buffer object binding (`?GL_ARRAY_BUFFER_BINDING' -%% ) is saved as fog coordinate vertex array client-side state (`?GL_FOG_COORD_ARRAY_BUFFER_BINDING' -%% ). -%% -%% When a fog coordinate array is specified, `Type' , `Stride' , and `Pointer' -%% are saved as client-side state, in addition to the current vertex array buffer object -%% binding. -%% -%% To enable and disable the fog coordinate array, call {@link gl:enableClientState/1} and {@link gl:enableClientState/1} -%% with the argument `?GL_FOG_COORD_ARRAY'. If enabled, the fog coordinate array is -%% used when {@link gl:drawArrays/3} , {@link gl:multiDrawArrays/3} , {@link gl:drawElements/4} , see `glMultiDrawElements' -%% , {@link gl:drawRangeElements/6} , or {@link gl:arrayElement/1} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFogCoordPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFogCoordPointer.xml">external</a> documentation. -spec fogCoordPointer(Type, Stride, Pointer) -> 'ok' when Type :: enum(),Stride :: integer(),Pointer :: offset()|mem(). fogCoordPointer(Type,Stride,Pointer) when is_integer(Pointer) -> cast(5403, <<Type:?GLenum,Stride:?GLsizei,Pointer:?GLuint>>); @@ -9770,31 +3954,7 @@ fogCoordPointer(Type,Stride,Pointer) -> %% The GL stores both a primary four-valued RGBA color and a secondary four-valued RGBA %% color (where alpha is always set to 0.0) that is associated with every vertex. %% -%% The secondary color is interpolated and applied to each fragment during rasterization -%% when `?GL_COLOR_SUM' is enabled. When lighting is enabled, and `?GL_SEPARATE_SPECULAR_COLOR' -%% is specified, the value of the secondary color is assigned the value computed from the -%% specular term of the lighting computation. Both the primary and secondary current colors -%% are applied to each fragment, regardless of the state of `?GL_COLOR_SUM', under such -%% conditions. When `?GL_SEPARATE_SPECULAR_COLOR' is specified, the value returned from -%% querying the current secondary color is undefined. -%% -%% ``gl:secondaryColor3b'', ``gl:secondaryColor3s'', and ``gl:secondaryColor3i'' take -%% three signed byte, short, or long integers as arguments. When `v' is appended to -%% the name, the color commands can take a pointer to an array of such values. -%% -%% Color values are stored in floating-point format, with unspecified mantissa and exponent -%% sizes. Unsigned integer color components, when specified, are linearly mapped to floating-point -%% values such that the largest representable value maps to 1.0 (full intensity), and 0 maps -%% to 0.0 (zero intensity). Signed integer color components, when specified, are linearly -%% mapped to floating-point values such that the most positive representable value maps to -%% 1.0, and the most negative representable value maps to -1.0. (Note that this mapping -%% does not convert 0 precisely to 0.0). Floating-point values are mapped directly. -%% -%% Neither floating-point nor signed integer values are clamped to the range [0 1] before the -%% current color is updated. However, color components are clamped to this range before they -%% are interpolated or written into a color buffer. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glSecondaryColor.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glSecondaryColor.xml">external</a> documentation. -spec secondaryColor3b(Red, Green, Blue) -> 'ok' when Red :: integer(),Green :: integer(),Blue :: integer(). secondaryColor3b(Red,Green,Blue) -> cast(5405, <<Red:?GLbyte,Green:?GLbyte,Blue:?GLbyte>>). @@ -9881,23 +4041,7 @@ secondaryColor3usv({Red,Green,Blue}) -> secondaryColor3us(Red,Green,Blue). %% specifies the byte stride from one color to the next, allowing vertices and attributes %% to be packed into a single array or stored in separate arrays. %% -%% If a non-zero named buffer object is bound to the `?GL_ARRAY_BUFFER' target (see {@link gl:bindBuffer/2} -%% ) while a secondary color array is specified, `Pointer' is treated as a byte offset -%% into the buffer object's data store. Also, the buffer object binding (`?GL_ARRAY_BUFFER_BINDING' -%% ) is saved as secondary color vertex array client-side state (`?GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING' -%% ). -%% -%% When a secondary color array is specified, `Size' , `Type' , `Stride' , and `Pointer' -%% are saved as client-side state, in addition to the current vertex array buffer object -%% binding. -%% -%% To enable and disable the secondary color array, call {@link gl:enableClientState/1} and {@link gl:enableClientState/1} -%% with the argument `?GL_SECONDARY_COLOR_ARRAY'. If enabled, the secondary color array -%% is used when {@link gl:arrayElement/1} , {@link gl:drawArrays/3} , {@link gl:multiDrawArrays/3} , -%% {@link gl:drawElements/4} , see `glMultiDrawElements', or {@link gl:drawRangeElements/6} -%% is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glSecondaryColorPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glSecondaryColorPointer.xml">external</a> documentation. -spec secondaryColorPointer(Size, Type, Stride, Pointer) -> 'ok' when Size :: integer(),Type :: enum(),Stride :: integer(),Pointer :: offset()|mem(). secondaryColorPointer(Size,Type,Stride,Pointer) when is_integer(Pointer) -> cast(5413, <<Size:?GLint,Type:?GLenum,Stride:?GLsizei,Pointer:?GLuint>>); @@ -9912,38 +4056,7 @@ secondaryColorPointer(Size,Type,Stride,Pointer) -> %% subpixel accuracy. See {@link gl:bitmap/7} , {@link gl:drawPixels/5} , and {@link gl:copyPixels/5} %% . %% -%% ``gl:windowPos2'' specifies the x and y coordinates, while z is implicitly set -%% to 0. ``gl:windowPos3'' specifies all three coordinates. The w coordinate of the current -%% raster position is always set to 1.0. -%% -%% ``gl:windowPos'' directly updates the x and y coordinates of the current raster -%% position with the values specified. That is, the values are neither transformed by the -%% current modelview and projection matrices, nor by the viewport-to-window transform. The -%% z coordinate of the current raster position is updated in the following manner: -%% -%% z={n f(n+z×(f-n)) if z<= 0 if z>= 1(otherwise)) -%% -%% where n is `?GL_DEPTH_RANGE''s near value, and f is `?GL_DEPTH_RANGE''s -%% far value. See {@link gl:depthRange/2} . -%% -%% The specified coordinates are not clip-tested, causing the raster position to always -%% be valid. -%% -%% The current raster position also includes some associated color data and texture coordinates. -%% If lighting is enabled, then `?GL_CURRENT_RASTER_COLOR' (in RGBA mode) or `?GL_CURRENT_RASTER_INDEX' -%% (in color index mode) is set to the color produced by the lighting calculation (see {@link gl:lightf/3} -%% , {@link gl:lightModelf/2} , and {@link gl:shadeModel/1} ). If lighting is disabled, current -%% color (in RGBA mode, state variable `?GL_CURRENT_COLOR') or color index (in color -%% index mode, state variable `?GL_CURRENT_INDEX') is used to update the current raster -%% color. `?GL_CURRENT_RASTER_SECONDARY_COLOR' (in RGBA mode) is likewise updated. -%% -%% Likewise, `?GL_CURRENT_RASTER_TEXTURE_COORDS' is updated as a function of `?GL_CURRENT_TEXTURE_COORDS' -%% , based on the texture matrix and the texture generation functions (see {@link gl:texGend/3} ). -%% The `?GL_CURRENT_RASTER_DISTANCE' is set to the `?GL_CURRENT_FOG_COORD'. -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWindowPos.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glWindowPos.xml">external</a> documentation. -spec windowPos2d(X, Y) -> 'ok' when X :: float(),Y :: float(). windowPos2d(X,Y) -> cast(5415, <<X:?GLdouble,Y:?GLdouble>>). @@ -10028,13 +4141,7 @@ windowPos3sv({X,Y,Z}) -> windowPos3s(X,Y,Z). %% that the names form a contiguous set of integers; however, it is guaranteed that none %% of the returned names was in use immediately before the call to ``gl:genQueries''. %% -%% Query object names returned by a call to ``gl:genQueries'' are not returned by subsequent -%% calls, unless they are first deleted with {@link gl:deleteQueries/1} . -%% -%% No query objects are associated with the returned query object names until they are first -%% used by calling {@link gl:beginQuery/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenQueries.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenQueries.xhtml">external</a> documentation. -spec genQueries(N) -> [integer()] when N :: integer(). genQueries(N) -> call(5423, <<N:?GLsizei>>). @@ -10045,10 +4152,7 @@ genQueries(N) -> %% . After a query object is deleted, it has no contents, and its name is free for reuse %% (for example by {@link gl:genQueries/1} ). %% -%% ``gl:deleteQueries'' silently ignores 0's and names that do not correspond to existing -%% query objects. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteQueries.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteQueries.xhtml">external</a> documentation. -spec deleteQueries(Ids) -> 'ok' when Ids :: [integer()]. deleteQueries(Ids) -> IdsLen = length(Ids), @@ -10061,10 +4165,7 @@ deleteQueries(Ids) -> %% object. If `Id' is zero, or is a non-zero value that is not currently the name of %% a query object, or if an error occurs, ``gl:isQuery'' returns `?GL_FALSE'. %% -%% A name returned by {@link gl:genQueries/1} , but not yet associated with a query object -%% by calling {@link gl:beginQuery/2} , is not the name of a query object. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsQuery.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsQuery.xhtml">external</a> documentation. -spec isQuery(Id) -> 0|1 when Id :: integer(). isQuery(Id) -> call(5425, <<Id:?GLuint>>). @@ -10078,60 +4179,7 @@ isQuery(Id) -> %% , `?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN', or `?GL_TIME_ELAPSED'. The behavior %% of the query object depends on its type and is as follows. %% -%% If `Target' is `?GL_SAMPLES_PASSED', `Id' must be an unused name, or the -%% name of an existing occlusion query object. When ``gl:beginQuery'' is executed, the -%% query object's samples-passed counter is reset to 0. Subsequent rendering will increment -%% the counter for every sample that passes the depth test. If the value of `?GL_SAMPLE_BUFFERS' -%% is 0, then the samples-passed count is incremented by 1 for each fragment. If the value -%% of `?GL_SAMPLE_BUFFERS' is 1, then the samples-passed count is incremented by the -%% number of samples whose coverage bit is set. However, implementations, at their discression -%% may instead increase the samples-passed count by the value of `?GL_SAMPLES' if any -%% sample in the fragment is covered. When ``gl:endQuery'' is executed, the samples-passed -%% counter is assigned to the query object's result value. This value can be queried by calling -%% {@link gl:getQueryObjectiv/2} with `Pname' `?GL_QUERY_RESULT'. -%% -%% If `Target' is `?GL_ANY_SAMPLES_PASSED', `Id' must be an unused name, -%% or the name of an existing boolean occlusion query object. When ``gl:beginQuery'' is -%% executed, the query object's samples-passed flag is reset to `?GL_FALSE'. Subsequent -%% rendering causes the flag to be set to `?GL_TRUE' if any sample passes the depth -%% test. When ``gl:endQuery'' is executed, the samples-passed flag is assigned to the query -%% object's result value. This value can be queried by calling {@link gl:getQueryObjectiv/2} -%% with `Pname' `?GL_QUERY_RESULT'. -%% -%% If `Target' is `?GL_PRIMITIVES_GENERATED', `Id' must be an unused name, -%% or the name of an existing primitive query object previously bound to the `?GL_PRIMITIVES_GENERATED' -%% query binding. When ``gl:beginQuery'' is executed, the query object's primitives-generated -%% counter is reset to 0. Subsequent rendering will increment the counter once for every -%% vertex that is emitted from the geometry shader, or from the vertex shader if no geometry -%% shader is present. When ``gl:endQuery'' is executed, the primitives-generated counter -%% is assigned to the query object's result value. This value can be queried by calling {@link gl:getQueryObjectiv/2} -%% with `Pname' `?GL_QUERY_RESULT'. -%% -%% If `Target' is `?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN', `Id' must -%% be an unused name, or the name of an existing primitive query object previously bound -%% to the `?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN' query binding. When ``gl:beginQuery'' -%% is executed, the query object's primitives-written counter is reset to 0. Subsequent -%% rendering will increment the counter once for every vertex that is written into the bound -%% transform feedback buffer(s). If transform feedback mode is not activated between the -%% call to ``gl:beginQuery'' and ``gl:endQuery'', the counter will not be incremented. -%% When ``gl:endQuery'' is executed, the primitives-written counter is assigned to the -%% query object's result value. This value can be queried by calling {@link gl:getQueryObjectiv/2} -%% with `Pname' `?GL_QUERY_RESULT'. -%% -%% If `Target' is `?GL_TIME_ELAPSED', `Id' must be an unused name, or the -%% name of an existing timer query object previously bound to the `?GL_TIME_ELAPSED' -%% query binding. When ``gl:beginQuery'' is executed, the query object's time counter is -%% reset to 0. When ``gl:endQuery'' is executed, the elapsed server time that has passed -%% since the call to ``gl:beginQuery'' is written into the query object's time counter. -%% This value can be queried by calling {@link gl:getQueryObjectiv/2} with `Pname' `?GL_QUERY_RESULT' -%% . -%% -%% Querying the `?GL_QUERY_RESULT' implicitly flushes the GL pipeline until the rendering -%% delimited by the query object has completed and the result is available. `?GL_QUERY_RESULT_AVAILABLE' -%% can be queried to determine if the result is immediately available or if the rendering -%% is not yet complete. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBeginQuery.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBeginQuery.xhtml">external</a> documentation. -spec beginQuery(Target, Id) -> 'ok' when Target :: enum(),Id :: integer(). beginQuery(Target,Id) -> cast(5426, <<Target:?GLenum,Id:?GLuint>>). @@ -10144,7 +4192,7 @@ endQuery(Target) -> %% @doc glGetQuery %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetQuery.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getQueryiv(Target, Pname) -> integer() when Target :: enum(),Pname :: enum(). getQueryiv(Target,Pname) -> call(5428, <<Target:?GLenum,Pname:?GLenum>>). @@ -10154,17 +4202,7 @@ getQueryiv(Target,Pname) -> %% ``gl:getQueryObject'' returns in `Params' a selected parameter of the query object %% specified by `Id' . %% -%% `Pname' names a specific query object parameter. `Pname' can be as follows: -%% -%% `?GL_QUERY_RESULT': `Params' returns the value of the query object's passed -%% samples counter. The initial value is 0. -%% -%% `?GL_QUERY_RESULT_AVAILABLE': `Params' returns whether the passed samples counter -%% is immediately available. If a delay would occur waiting for the query result, `?GL_FALSE' -%% is returned. Otherwise, `?GL_TRUE' is returned, which also indicates that the results -%% of all previous queries are available as well. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetQueryObject.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetQueryObject.xhtml">external</a> documentation. -spec getQueryObjectiv(Id, Pname) -> integer() when Id :: integer(),Pname :: enum(). getQueryObjectiv(Id,Pname) -> call(5429, <<Id:?GLuint,Pname:?GLenum>>). @@ -10183,77 +4221,7 @@ getQueryObjectuiv(Id,Pname) -> %% object with name `Buffer' exists, one is created with that name. When a buffer object %% is bound to a target, the previous binding for that target is automatically broken. %% -%% Buffer object names are unsigned integers. The value zero is reserved, but there is no -%% default buffer object for each buffer object target. Instead, `Buffer' set to zero -%% effectively unbinds any buffer object previously bound, and restores client memory usage -%% for that buffer object target (if supported for that target). Buffer object names and -%% the corresponding buffer object contents are local to the shared object space of the current -%% GL rendering context; two rendering contexts share buffer object names only if they explicitly -%% enable sharing between contexts through the appropriate GL windows interfaces functions. -%% -%% {@link gl:genBuffers/1} must be used to generate a set of unused buffer object names. -%% -%% The state of a buffer object immediately after it is first bound is an unmapped zero-sized -%% memory buffer with `?GL_READ_WRITE' access and `?GL_STATIC_DRAW' usage. -%% -%% While a non-zero buffer object name is bound, GL operations on the target to which it -%% is bound affect the bound buffer object, and queries of the target to which it is bound -%% return state from the bound buffer object. While buffer object name zero is bound, as -%% in the initial state, attempts to modify or query state on the target to which it is bound -%% generates an `?GL_INVALID_OPERATION' error. -%% -%% When a non-zero buffer object is bound to the `?GL_ARRAY_BUFFER' target, the vertex -%% array pointer parameter is interpreted as an offset within the buffer object measured -%% in basic machine units. -%% -%% When a non-zero buffer object is bound to the `?GL_DRAW_INDIRECT_BUFFER' target, -%% parameters for draws issued through {@link gl:drawArraysIndirect/2} and {@link gl:drawElementsIndirect/3} -%% are sourced from that buffer object. -%% -%% While a non-zero buffer object is bound to the `?GL_ELEMENT_ARRAY_BUFFER' target, -%% the indices parameter of {@link gl:drawElements/4} , {@link gl:drawElementsInstanced/5} , {@link gl:drawElementsBaseVertex/5} -%% , {@link gl:drawRangeElements/6} , {@link gl:drawRangeElementsBaseVertex/7} , see `glMultiDrawElements' -%% , or see `glMultiDrawElementsBaseVertex' is interpreted as an offset within the -%% buffer object measured in basic machine units. -%% -%% While a non-zero buffer object is bound to the `?GL_PIXEL_PACK_BUFFER' target, -%% the following commands are affected: {@link gl:getCompressedTexImage/3} , {@link gl:getTexImage/5} -%% , and {@link gl:readPixels/7} . The pointer parameter is interpreted as an offset within -%% the buffer object measured in basic machine units. -%% -%% While a non-zero buffer object is bound to the `?GL_PIXEL_UNPACK_BUFFER' target, -%% the following commands are affected: {@link gl:compressedTexImage1D/7} , {@link gl:compressedTexImage2D/8} -%% , {@link gl:compressedTexImage3D/9} , {@link gl:compressedTexSubImage1D/7} , {@link gl:compressedTexSubImage2D/9} -%% , {@link gl:compressedTexSubImage3D/11} , {@link gl:texImage1D/8} , {@link gl:texImage2D/9} , {@link gl:texImage3D/10} -%% , {@link gl:texSubImage1D/7} , {@link gl:texSubImage1D/7} , and {@link gl:texSubImage1D/7} . -%% The pointer parameter is interpreted as an offset within the buffer object measured in -%% basic machine units. -%% -%% The buffer targets `?GL_COPY_READ_BUFFER' and `?GL_COPY_WRITE_BUFFER' are provided -%% to allow {@link gl:copyBufferSubData/5} to be used without disturbing the state of other -%% bindings. However, {@link gl:copyBufferSubData/5} may be used with any pair of buffer binding -%% points. -%% -%% The `?GL_TRANSFORM_FEEDBACK_BUFFER' buffer binding point may be passed to ``gl:bindBuffer'' -%% , but will not directly affect transform feedback state. Instead, the indexed `?GL_TRANSFORM_FEEDBACK_BUFFER' -%% bindings must be used through a call to {@link gl:bindBufferBase/3} or {@link gl:bindBufferRange/5} -%% . This will affect the generic `?GL_TRANSFORM_FEEDABCK_BUFFER' binding. -%% -%% Likewise, the `?GL_UNIFORM_BUFFER' and `?GL_ATOMIC_COUNTER_BUFFER' buffer binding -%% points may be used, but do not directly affect uniform buffer or atomic counter buffer -%% state, respectively. {@link gl:bindBufferBase/3} or {@link gl:bindBufferRange/5} must be -%% used to bind a buffer to an indexed uniform buffer or atomic counter buffer binding point. -%% -%% -%% A buffer object binding created with ``gl:bindBuffer'' remains active until a different -%% buffer object name is bound to the same target, or until the bound buffer object is deleted -%% with {@link gl:deleteBuffers/1} . -%% -%% Once created, a named buffer object may be re-bound to any target as often as needed. -%% However, the GL implementation may make choices about how to optimize the storage of a -%% buffer object based on its initial binding target. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindBuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindBuffer.xhtml">external</a> documentation. -spec bindBuffer(Target, Buffer) -> 'ok' when Target :: enum(),Buffer :: integer(). bindBuffer(Target,Buffer) -> cast(5431, <<Target:?GLenum,Buffer:?GLuint>>). @@ -10265,10 +4233,7 @@ bindBuffer(Target,Buffer) -> %% free for reuse (for example by {@link gl:genBuffers/1} ). If a buffer object that is currently %% bound is deleted, the binding reverts to 0 (the absence of any buffer object). %% -%% ``gl:deleteBuffers'' silently ignores 0's and names that do not correspond to existing -%% buffer objects. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteBuffers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteBuffers.xhtml">external</a> documentation. -spec deleteBuffers(Buffers) -> 'ok' when Buffers :: [integer()]. deleteBuffers(Buffers) -> BuffersLen = length(Buffers), @@ -10282,13 +4247,7 @@ deleteBuffers(Buffers) -> %% that none of the returned names was in use immediately before the call to ``gl:genBuffers'' %% . %% -%% Buffer object names returned by a call to ``gl:genBuffers'' are not returned by subsequent -%% calls, unless they are first deleted with {@link gl:deleteBuffers/1} . -%% -%% No buffer objects are associated with the returned buffer object names until they are -%% first bound by calling {@link gl:bindBuffer/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenBuffers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenBuffers.xhtml">external</a> documentation. -spec genBuffers(N) -> [integer()] when N :: integer(). genBuffers(N) -> call(5433, <<N:?GLsizei>>). @@ -10300,10 +4259,7 @@ genBuffers(N) -> %% the name of a buffer object, or if an error occurs, ``gl:isBuffer'' returns `?GL_FALSE' %% . %% -%% A name returned by {@link gl:genBuffers/1} , but not yet associated with a buffer object -%% by calling {@link gl:bindBuffer/2} , is not the name of a buffer object. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsBuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsBuffer.xhtml">external</a> documentation. -spec isBuffer(Buffer) -> 0|1 when Buffer :: integer(). isBuffer(Buffer) -> call(5434, <<Buffer:?GLuint>>). @@ -10317,31 +4273,7 @@ isBuffer(Buffer) -> %% is not mapped, it has a `?NULL' mapped pointer, and its mapped access is `?GL_READ_WRITE' %% . %% -%% `Usage' is a hint to the GL implementation as to how a buffer object's data store -%% will be accessed. This enables the GL implementation to make more intelligent decisions -%% that may significantly impact buffer object performance. It does not, however, constrain -%% the actual usage of the data store. `Usage' can be broken down into two parts: first, -%% the frequency of access (modification and usage), and second, the nature of that access. -%% The frequency of access may be one of these: -%% -%% STREAM: The data store contents will be modified once and used at most a few times. -%% -%% STATIC: The data store contents will be modified once and used many times. -%% -%% DYNAMIC: The data store contents will be modified repeatedly and used many times. -%% -%% The nature of access may be one of these: -%% -%% DRAW: The data store contents are modified by the application, and used as the source -%% for GL drawing and image specification commands. -%% -%% READ: The data store contents are modified by reading data from the GL, and used to return -%% that data when queried by the application. -%% -%% COPY: The data store contents are modified by reading data from the GL, and used as the -%% source for GL drawing and image specification commands. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBufferData.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBufferData.xhtml">external</a> documentation. -spec bufferData(Target, Size, Data, Usage) -> 'ok' when Target :: enum(),Size :: integer(),Data :: offset()|mem(),Usage :: enum(). bufferData(Target,Size,Data,Usage) when is_integer(Data) -> cast(5435, <<Target:?GLenum,0:32,Size:?GLsizeiptr,Data:?GLuint,Usage:?GLenum>>); @@ -10357,7 +4289,7 @@ bufferData(Target,Size,Data,Usage) -> %% is thrown if `Offset' and `Size' together define a range beyond the bounds of %% the buffer object's data store. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBufferSubData.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBufferSubData.xhtml">external</a> documentation. -spec bufferSubData(Target, Offset, Size, Data) -> 'ok' when Target :: enum(),Offset :: integer(),Size :: integer(),Data :: offset()|mem(). bufferSubData(Target,Offset,Size,Data) when is_integer(Data) -> cast(5437, <<Target:?GLenum,0:32,Offset:?GLintptr,Size:?GLsizeiptr,Data:?GLuint>>); @@ -10373,7 +4305,7 @@ bufferSubData(Target,Offset,Size,Data) -> %% is thrown if the buffer object is currently mapped, or if `Offset' and `Size' %% together define a range beyond the bounds of the buffer object's data store. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetBufferSubData.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetBufferSubData.xhtml">external</a> documentation. -spec getBufferSubData(Target, Offset, Size, Data) -> 'ok' when Target :: enum(),Offset :: integer(),Size :: integer(),Data :: mem(). getBufferSubData(Target,Offset,Size,Data) -> send_bin(Data), @@ -10384,21 +4316,7 @@ getBufferSubData(Target,Offset,Size,Data) -> %% ``gl:getBufferParameteriv'' returns in `Data' a selected parameter of the buffer %% object specified by `Target' . %% -%% `Value' names a specific buffer object parameter, as follows: -%% -%% `?GL_BUFFER_ACCESS': `Params' returns the access policy set while mapping the -%% buffer object. The initial value is `?GL_READ_WRITE'. -%% -%% `?GL_BUFFER_MAPPED': `Params' returns a flag indicating whether the buffer object -%% is currently mapped. The initial value is `?GL_FALSE'. -%% -%% `?GL_BUFFER_SIZE': `Params' returns the size of the buffer object, measured -%% in bytes. The initial value is 0. -%% -%% `?GL_BUFFER_USAGE': `Params' returns the buffer object's usage pattern. The -%% initial value is `?GL_STATIC_DRAW'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetBufferParameteriv.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGetBufferParameteriv.xml">external</a> documentation. -spec getBufferParameteriv(Target, Pname) -> integer() when Target :: enum(),Pname :: enum(). getBufferParameteriv(Target,Pname) -> call(5440, <<Target:?GLenum,Pname:?GLenum>>). @@ -10412,35 +4330,7 @@ getBufferParameteriv(Target,Pname) -> %% draw buffer whereas ``gl:blendEquationSeparate'' sets the blend equations for all draw %% buffers. %% -%% The blend equations use the source and destination blend factors specified by either {@link gl:blendFunc/2} -%% or {@link gl:blendFuncSeparate/4} . See {@link gl:blendFunc/2} or {@link gl:blendFuncSeparate/4} -%% for a description of the various blend factors. -%% -%% In the equations that follow, source and destination color components are referred to -%% as (R s G s B s A s) and (R d G d B d A d), respectively. The result color is referred to as (R r G r B r A r). The source and destination -%% blend factors are denoted (s R s G s B s A) and (d R d G d B d A), respectively. For these equations all color components -%% are understood to have values in the range [0 1]. <table><tbody><tr><td>` Mode '</td><td> -%% ` RGB Components '</td><td>` Alpha Component '</td></tr></tbody><tbody><tr><td>`?GL_FUNC_ADD' -%% </td><td> Rr=R s s R+R d d R Gr=G s s G+G d d G Br=B s s B+B d d B</td><td> Ar=A s -%% s A+A d d A</td></tr><tr><td>`?GL_FUNC_SUBTRACT'</td><td> Rr=R s s R-R d d R Gr=G -%% s s G-G d d G Br=B s s B-B d d B</td><td> Ar=A s s A-A d d A</td></tr><tr><td>`?GL_FUNC_REVERSE_SUBTRACT' -%% </td><td> Rr=R d d R-R s s R Gr=G d d G-G s s G Br=B d d B-B s s B</td><td> Ar=A d -%% d A-A s s A</td></tr><tr><td>`?GL_MIN'</td><td> Rr=min(R s R d) Gr=min(G s G d) Br=min(B s B d)</td><td> Ar=min -%% (A s A d)</td></tr><tr><td>`?GL_MAX'</td><td> Rr=max(R s R d) Gr=max(G s G d) Br=max(B s B d)</td><td> Ar=max(A s A d)</td></tr></tbody> -%% </table> -%% -%% The results of these equations are clamped to the range [0 1]. -%% -%% The `?GL_MIN' and `?GL_MAX' equations are useful for applications that analyze -%% image data (image thresholding against a constant color, for example). The `?GL_FUNC_ADD' -%% equation is useful for antialiasing and transparency, among other things. -%% -%% Initially, both the RGB blend equation and the alpha blend equation are set to `?GL_FUNC_ADD' -%% . -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBlendEquationSeparate.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendEquationSeparate.xhtml">external</a> documentation. -spec blendEquationSeparate(ModeRGB, ModeAlpha) -> 'ok' when ModeRGB :: enum(),ModeAlpha :: enum(). blendEquationSeparate(ModeRGB,ModeAlpha) -> cast(5441, <<ModeRGB:?GLenum,ModeAlpha:?GLenum>>). @@ -10455,32 +4345,7 @@ blendEquationSeparate(ModeRGB,ModeAlpha) -> %% or equal to `N' is implicitly set to `?GL_NONE' and any data written to such %% an output is discarded. %% -%% The symbolic constants contained in `Bufs' may be any of the following: -%% -%% `?GL_NONE': The fragment shader output value is not written into any color buffer. -%% -%% `?GL_FRONT_LEFT': The fragment shader output value is written into the front left -%% color buffer. -%% -%% `?GL_FRONT_RIGHT': The fragment shader output value is written into the front right -%% color buffer. -%% -%% `?GL_BACK_LEFT': The fragment shader output value is written into the back left color -%% buffer. -%% -%% `?GL_BACK_RIGHT': The fragment shader output value is written into the back right -%% color buffer. -%% -%% `?GL_COLOR_ATTACHMENT'`n': The fragment shader output value is written into -%% the `n'th color attachment of the current framebuffer. `n' may range from 0 -%% to the value of `?GL_MAX_COLOR_ATTACHMENTS'. -%% -%% Except for `?GL_NONE', the preceding symbolic constants may not appear more than -%% once in `Bufs' . The maximum number of draw buffers supported is implementation dependent -%% and can be queried by calling {@link gl:getBooleanv/1} with the argument `?GL_MAX_DRAW_BUFFERS' -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawBuffers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawBuffers.xhtml">external</a> documentation. -spec drawBuffers(Bufs) -> 'ok' when Bufs :: [enum()]. drawBuffers(Bufs) -> BufsLen = length(Bufs), @@ -10495,55 +4360,7 @@ drawBuffers(Bufs) -> %% used in multipass rendering algorithms to achieve special effects, such as decals, outlining, %% and constructive solid geometry rendering. %% -%% The stencil test conditionally eliminates a pixel based on the outcome of a comparison -%% between the value in the stencil buffer and a reference value. To enable and disable the -%% test, call {@link gl:enable/1} and {@link gl:enable/1} with argument `?GL_STENCIL_TEST' -%% ; to control it, call {@link gl:stencilFunc/3} or {@link gl:stencilFuncSeparate/4} . -%% -%% There can be two separate sets of `Sfail' , `Dpfail' , and `Dppass' parameters; -%% one affects back-facing polygons, and the other affects front-facing polygons as well -%% as other non-polygon primitives. {@link gl:stencilOp/3} sets both front and back stencil -%% state to the same values, as if {@link gl:stencilOpSeparate/4} were called with `Face' -%% set to `?GL_FRONT_AND_BACK'. -%% -%% ``gl:stencilOpSeparate'' takes three arguments that indicate what happens to the stored -%% stencil value while stenciling is enabled. If the stencil test fails, no change is made -%% to the pixel's color or depth buffers, and `Sfail' specifies what happens to the -%% stencil buffer contents. The following eight actions are possible. -%% -%% `?GL_KEEP': Keeps the current value. -%% -%% `?GL_ZERO': Sets the stencil buffer value to 0. -%% -%% `?GL_REPLACE': Sets the stencil buffer value to `ref', as specified by {@link gl:stencilFunc/3} -%% . -%% -%% `?GL_INCR': Increments the current stencil buffer value. Clamps to the maximum representable -%% unsigned value. -%% -%% `?GL_INCR_WRAP': Increments the current stencil buffer value. Wraps stencil buffer -%% value to zero when incrementing the maximum representable unsigned value. -%% -%% `?GL_DECR': Decrements the current stencil buffer value. Clamps to 0. -%% -%% `?GL_DECR_WRAP': Decrements the current stencil buffer value. Wraps stencil buffer -%% value to the maximum representable unsigned value when decrementing a stencil buffer value -%% of zero. -%% -%% `?GL_INVERT': Bitwise inverts the current stencil buffer value. -%% -%% Stencil buffer values are treated as unsigned integers. When incremented and decremented, -%% values are clamped to 0 and 2 n-1, where n is the value returned by querying `?GL_STENCIL_BITS' -%% . -%% -%% The other two arguments to ``gl:stencilOpSeparate'' specify stencil buffer actions -%% that depend on whether subsequent depth buffer tests succeed ( `Dppass' ) or fail ( `Dpfail' -%% ) (see {@link gl:depthFunc/1} ). The actions are specified using the same eight symbolic -%% constants as `Sfail' . Note that `Dpfail' is ignored when there is no depth buffer, -%% or when the depth buffer is not enabled. In these cases, `Sfail' and `Dppass' -%% specify stencil action when the stencil test fails and passes, respectively. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glStencilOpSeparate.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glStencilOpSeparate.xhtml">external</a> documentation. -spec stencilOpSeparate(Face, Sfail, Dpfail, Dppass) -> 'ok' when Face :: enum(),Sfail :: enum(),Dpfail :: enum(),Dppass :: enum(). stencilOpSeparate(Face,Sfail,Dpfail,Dppass) -> cast(5443, <<Face:?GLenum,Sfail:?GLenum,Dpfail:?GLenum,Dppass:?GLenum>>). @@ -10556,57 +4373,7 @@ stencilOpSeparate(Face,Sfail,Dpfail,Dppass) -> %% used in multipass rendering algorithms to achieve special effects, such as decals, outlining, %% and constructive solid geometry rendering. %% -%% The stencil test conditionally eliminates a pixel based on the outcome of a comparison -%% between the reference value and the value in the stencil buffer. To enable and disable -%% the test, call {@link gl:enable/1} and {@link gl:enable/1} with argument `?GL_STENCIL_TEST' -%% . To specify actions based on the outcome of the stencil test, call {@link gl:stencilOp/3} -%% or {@link gl:stencilOpSeparate/4} . -%% -%% There can be two separate sets of `Func' , `Ref' , and `Mask' parameters; -%% one affects back-facing polygons, and the other affects front-facing polygons as well -%% as other non-polygon primitives. {@link gl:stencilFunc/3} sets both front and back stencil -%% state to the same values, as if {@link gl:stencilFuncSeparate/4} were called with `Face' -%% set to `?GL_FRONT_AND_BACK'. -%% -%% `Func' is a symbolic constant that determines the stencil comparison function. It -%% accepts one of eight values, shown in the following list. `Ref' is an integer reference -%% value that is used in the stencil comparison. It is clamped to the range [0 2 n-1], where n -%% is the number of bitplanes in the stencil buffer. `Mask' is bitwise ANDed with both -%% the reference value and the stored stencil value, with the ANDed values participating -%% in the comparison. -%% -%% If `stencil' represents the value stored in the corresponding stencil buffer location, -%% the following list shows the effect of each comparison function that can be specified by `Func' -%% . Only if the comparison succeeds is the pixel passed through to the next stage in the -%% rasterization process (see {@link gl:stencilOp/3} ). All tests treat `stencil' values -%% as unsigned integers in the range [0 2 n-1], where n is the number of bitplanes in the stencil -%% buffer. -%% -%% The following values are accepted by `Func' : -%% -%% `?GL_NEVER': Always fails. -%% -%% `?GL_LESS': Passes if ( `Ref' & `Mask' ) < ( `stencil' & `Mask' -%% ). -%% -%% `?GL_LEQUAL': Passes if ( `Ref' & `Mask' ) <= ( `stencil' -%% & `Mask' ). -%% -%% `?GL_GREATER': Passes if ( `Ref' & `Mask' ) > ( `stencil' -%% & `Mask' ). -%% -%% `?GL_GEQUAL': Passes if ( `Ref' & `Mask' ) >= ( `stencil' -%% & `Mask' ). -%% -%% `?GL_EQUAL': Passes if ( `Ref' & `Mask' ) = ( `stencil' & `Mask' -%% ). -%% -%% `?GL_NOTEQUAL': Passes if ( `Ref' & `Mask' ) != ( `stencil' & -%% `Mask' ). -%% -%% `?GL_ALWAYS': Always passes. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glStencilFuncSeparate.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glStencilFuncSeparate.xhtml">external</a> documentation. -spec stencilFuncSeparate(Face, Func, Ref, Mask) -> 'ok' when Face :: enum(),Func :: enum(),Ref :: integer(),Mask :: integer(). stencilFuncSeparate(Face,Func,Ref,Mask) -> cast(5444, <<Face:?GLenum,Func:?GLenum,Ref:?GLint,Mask:?GLuint>>). @@ -10619,12 +4386,7 @@ stencilFuncSeparate(Face,Func,Ref,Mask) -> %% to the corresponding bit in the stencil buffer. Where a 0 appears, the corresponding bit %% is write-protected. Initially, all bits are enabled for writing. %% -%% There can be two separate `Mask' writemasks; one affects back-facing polygons, and -%% the other affects front-facing polygons as well as other non-polygon primitives. {@link gl:stencilMask/1} -%% sets both front and back stencil writemasks to the same values, as if {@link gl:stencilMaskSeparate/2} -%% were called with `Face' set to `?GL_FRONT_AND_BACK'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glStencilMaskSeparate.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glStencilMaskSeparate.xhtml">external</a> documentation. -spec stencilMaskSeparate(Face, Mask) -> 'ok' when Face :: enum(),Mask :: integer(). stencilMaskSeparate(Face,Mask) -> cast(5445, <<Face:?GLenum,Mask:?GLuint>>). @@ -10638,17 +4400,7 @@ stencilMaskSeparate(Face,Mask) -> %% the program object specified by `Program' . This indicates that `Shader' will %% be included in link operations that will be performed on `Program' . %% -%% All operations that can be performed on a shader object are valid whether or not the -%% shader object is attached to a program object. It is permissible to attach a shader object -%% to a program object before source code has been loaded into the shader object or before -%% the shader object has been compiled. It is permissible to attach multiple shader objects -%% of the same type because each may contain a portion of the complete shader. It is also -%% permissible to attach a shader object to more than one program object. If a shader object -%% is deleted while it is attached to a program object, it will be flagged for deletion, -%% and deletion will not occur until {@link gl:detachShader/2} is called to detach it from -%% all program objects to which it is attached. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glAttachShader.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glAttachShader.xhtml">external</a> documentation. -spec attachShader(Program, Shader) -> 'ok' when Program :: integer(),Shader :: integer(). attachShader(Program,Shader) -> cast(5446, <<Program:?GLuint,Shader:?GLuint>>). @@ -10663,29 +4415,7 @@ attachShader(Program,Shader) -> %% attribute `Index' will modify the value of the user-defined attribute variable specified %% by `Name' . %% -%% If `Name' refers to a matrix attribute variable, `Index' refers to the first -%% column of the matrix. Other matrix columns are then automatically bound to locations `Index+1' -%% for a matrix of type `mat2'; `Index+1' and `Index+2' for a matrix of type -%% `mat3'; and `Index+1' , `Index+2' , and `Index+3' for a matrix of type `mat4' -%% . -%% -%% This command makes it possible for vertex shaders to use descriptive names for attribute -%% variables rather than generic variables that are numbered from 0 to `?GL_MAX_VERTEX_ATTRIBS' -%% -1. The values sent to each generic attribute index are part of current state. If a different -%% program object is made current by calling {@link gl:useProgram/1} , the generic vertex attributes -%% are tracked in such a way that the same values will be observed by attributes in the new -%% program object that are also bound to `Index' . -%% -%% Attribute variable name-to-generic attribute index bindings for a program object can be -%% explicitly assigned at any time by calling ``gl:bindAttribLocation''. Attribute bindings -%% do not go into effect until {@link gl:linkProgram/1} is called. After a program object -%% has been linked successfully, the index values for generic attributes remain fixed (and -%% their values can be queried) until the next link command occurs. -%% -%% Any attribute binding that occurs after the program object has been linked will not take -%% effect until the next time the program object is linked. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindAttribLocation.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindAttribLocation.xhtml">external</a> documentation. -spec bindAttribLocation(Program, Index, Name) -> 'ok' when Program :: integer(),Index :: integer(),Name :: string(). bindAttribLocation(Program,Index,Name) -> NameLen = length(Name), @@ -10696,17 +4426,7 @@ bindAttribLocation(Program,Index,Name) -> %% ``gl:compileShader'' compiles the source code strings that have been stored in the shader %% object specified by `Shader' . %% -%% The compilation status will be stored as part of the shader object's state. This value -%% will be set to `?GL_TRUE' if the shader was compiled without errors and is ready -%% for use, and `?GL_FALSE' otherwise. It can be queried by calling {@link gl:getShaderiv/2} -%% with arguments `Shader' and `?GL_COMPILE_STATUS'. -%% -%% Compilation of a shader can fail for a number of reasons as specified by the OpenGL Shading -%% Language Specification. Whether or not the compilation was successful, information about -%% the compilation can be obtained from the shader object's information log by calling {@link gl:getShaderInfoLog/2} -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompileShader.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCompileShader.xhtml">external</a> documentation. -spec compileShader(Shader) -> 'ok' when Shader :: integer(). compileShader(Shader) -> cast(5448, <<Shader:?GLuint>>). @@ -10721,15 +4441,7 @@ compileShader(Shader) -> %% between a vertex shader and a fragment shader). When no longer needed as part of a program %% object, shader objects can be detached. %% -%% One or more executables are created in a program object by successfully attaching shader -%% objects to it with {@link gl:attachShader/2} , successfully compiling the shader objects -%% with {@link gl:compileShader/1} , and successfully linking the program object with {@link gl:linkProgram/1} -%% . These executables are made part of current state when {@link gl:useProgram/1} is called. -%% Program objects can be deleted by calling {@link gl:deleteProgram/1} . The memory associated -%% with the program object will be deleted when it is no longer part of current rendering -%% state for any context. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCreateProgram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml">external</a> documentation. -spec createProgram() -> integer(). createProgram() -> call(5449, <<>>). @@ -10748,11 +4460,7 @@ createProgram() -> %% programmable geometry processor. A shader of type `?GL_FRAGMENT_SHADER' is a shader %% that is intended to run on the programmable fragment processor. %% -%% When created, a shader object's `?GL_SHADER_TYPE' parameter is set to either `?GL_VERTEX_SHADER' -%% , `?GL_TESS_CONTROL_SHADER', `?GL_TESS_EVALUATION_SHADER', `?GL_GEOMETRY_SHADER' -%% or `?GL_FRAGMENT_SHADER', depending on the value of `ShaderType' . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCreateShader.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCreateShader.xhtml">external</a> documentation. -spec createShader(Type) -> integer() when Type :: enum(). createShader(Type) -> call(5450, <<Type:?GLenum>>). @@ -10763,17 +4471,7 @@ createShader(Type) -> %% object specified by `Program.' This command effectively undoes the effects of a call %% to {@link gl:createProgram/0} . %% -%% If a program object is in use as part of current rendering state, it will be flagged for -%% deletion, but it will not be deleted until it is no longer part of current state for any -%% rendering context. If a program object to be deleted has shader objects attached to it, -%% those shader objects will be automatically detached but not deleted unless they have already -%% been flagged for deletion by a previous call to {@link gl:deleteShader/1} . A value of 0 -%% for `Program' will be silently ignored. -%% -%% To determine whether a program object has been flagged for deletion, call {@link gl:getProgramiv/2} -%% with arguments `Program' and `?GL_DELETE_STATUS'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteProgram.xhtml">external</a> documentation. -spec deleteProgram(Program) -> 'ok' when Program :: integer(). deleteProgram(Program) -> cast(5451, <<Program:?GLuint>>). @@ -10784,15 +4482,7 @@ deleteProgram(Program) -> %% object specified by `Shader' . This command effectively undoes the effects of a call %% to {@link gl:createShader/1} . %% -%% If a shader object to be deleted is attached to a program object, it will be flagged for -%% deletion, but it will not be deleted until it is no longer attached to any program object, -%% for any rendering context (i.e., it must be detached from wherever it was attached before -%% it will be deleted). A value of 0 for `Shader' will be silently ignored. -%% -%% To determine whether an object has been flagged for deletion, call {@link gl:getShaderiv/2} -%% with arguments `Shader' and `?GL_DELETE_STATUS'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteShader.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteShader.xhtml">external</a> documentation. -spec deleteShader(Shader) -> 'ok' when Shader :: integer(). deleteShader(Shader) -> cast(5452, <<Shader:?GLuint>>). @@ -10803,11 +4493,7 @@ deleteShader(Shader) -> %% object specified by `Program' . This command can be used to undo the effect of the %% command {@link gl:attachShader/2} . %% -%% If `Shader' has already been flagged for deletion by a call to {@link gl:deleteShader/1} -%% and it is not attached to any other program object, it will be deleted after it has been -%% detached. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDetachShader.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDetachShader.xhtml">external</a> documentation. -spec detachShader(Program, Shader) -> 'ok' when Program :: integer(),Shader :: integer(). detachShader(Program,Shader) -> cast(5453, <<Program:?GLuint,Shader:?GLuint>>). @@ -10822,7 +4508,7 @@ detachShader(Program,Shader) -> %% such as {@link gl:drawArrays/3} , {@link gl:drawElements/4} , {@link gl:drawRangeElements/6} , see `glMultiDrawElements' %% , or {@link gl:multiDrawArrays/3} . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEnableVertexAttribArray.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glEnableVertexAttribArray.xhtml">external</a> documentation. -spec disableVertexAttribArray(Index) -> 'ok' when Index :: integer(). disableVertexAttribArray(Index) -> cast(5454, <<Index:?GLuint>>). @@ -10841,52 +4527,7 @@ enableVertexAttribArray(Index) -> %% of 0 for `Index' selects the first active attribute variable. Permissible values %% for `Index' range from 0 to the number of active attribute variables minus 1. %% -%% A vertex shader may use either built-in attribute variables, user-defined attribute variables, -%% or both. Built-in attribute variables have a prefix of "gl_" and reference conventional -%% OpenGL vertex attribtes (e.g., `Gl_Vertex' , `Gl_Normal' , etc., see the OpenGL -%% Shading Language specification for a complete list.) User-defined attribute variables -%% have arbitrary names and obtain their values through numbered generic vertex attributes. -%% An attribute variable (either built-in or user-defined) is considered active if it is -%% determined during the link operation that it may be accessed during program execution. -%% Therefore, `Program' should have previously been the target of a call to {@link gl:linkProgram/1} -%% , but it is not necessary for it to have been linked successfully. -%% -%% The size of the character buffer required to store the longest attribute variable name -%% in `Program' can be obtained by calling {@link gl:getProgramiv/2} with the value `?GL_ACTIVE_ATTRIBUTE_MAX_LENGTH' -%% . This value should be used to allocate a buffer of sufficient size to store the returned -%% attribute name. The size of this character buffer is passed in `BufSize' , and a pointer -%% to this character buffer is passed in `Name' . -%% -%% ``gl:getActiveAttrib'' returns the name of the attribute variable indicated by `Index' -%% , storing it in the character buffer specified by `Name' . The string returned will -%% be null terminated. The actual number of characters written into this buffer is returned -%% in `Length' , and this count does not include the null termination character. If the -%% length of the returned string is not required, a value of `?NULL' can be passed in -%% the `Length' argument. -%% -%% The `Type' argument specifies a pointer to a variable into which the attribute variable's -%% data type will be written. The symbolic constants `?GL_FLOAT', `?GL_FLOAT_VEC2', -%% `?GL_FLOAT_VEC3', `?GL_FLOAT_VEC4', `?GL_FLOAT_MAT2', `?GL_FLOAT_MAT3', -%% `?GL_FLOAT_MAT4', `?GL_FLOAT_MAT2x3', `?GL_FLOAT_MAT2x4', `?GL_FLOAT_MAT3x2' -%% , `?GL_FLOAT_MAT3x4', `?GL_FLOAT_MAT4x2', `?GL_FLOAT_MAT4x3', `?GL_INT' -%% , `?GL_INT_VEC2', `?GL_INT_VEC3', `?GL_INT_VEC4', `?GL_UNSIGNED_INT_VEC' -%% , `?GL_UNSIGNED_INT_VEC2', `?GL_UNSIGNED_INT_VEC3', `?GL_UNSIGNED_INT_VEC4', -%% `?DOUBLE', `?DOUBLE_VEC2', `?DOUBLE_VEC3', `?DOUBLE_VEC4', `?DOUBLE_MAT2' -%% , `?DOUBLE_MAT3', `?DOUBLE_MAT4', `?DOUBLE_MAT2x3', `?DOUBLE_MAT2x4', -%% `?DOUBLE_MAT3x2', `?DOUBLE_MAT3x4', `?DOUBLE_MAT4x2', or `?DOUBLE_MAT4x3' -%% may be returned. The `Size' argument will return the size of the attribute, in units -%% of the type returned in `Type' . -%% -%% The list of active attribute variables may include both built-in attribute variables (which -%% begin with the prefix "gl_") as well as user-defined attribute variable names. -%% -%% This function will return as much information as it can about the specified active attribute -%% variable. If no information is available, `Length' will be 0, and `Name' will -%% be an empty string. This situation could occur if this function is called after a link -%% operation that failed. If an error occurs, the return values `Length' , `Size' , `Type' -%% , and `Name' will be unmodified. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveAttrib.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveAttrib.xhtml">external</a> documentation. -spec getActiveAttrib(Program, Index, BufSize) -> {Size :: integer(),Type :: enum(),Name :: string()} when Program :: integer(),Index :: integer(),BufSize :: integer(). getActiveAttrib(Program,Index,BufSize) -> call(5456, <<Program:?GLuint,Index:?GLuint,BufSize:?GLsizei>>). @@ -10899,141 +4540,7 @@ getActiveAttrib(Program,Index,BufSize) -> %% A value of 0 for `Index' selects the first active uniform variable. Permissible values %% for `Index' range from 0 to the number of active uniform variables minus 1. %% -%% Shaders may use either built-in uniform variables, user-defined uniform variables, or -%% both. Built-in uniform variables have a prefix of "gl_" and reference existing OpenGL -%% state or values derived from such state (e.g., `Gl_DepthRangeParameters' , see the -%% OpenGL Shading Language specification for a complete list.) User-defined uniform variables -%% have arbitrary names and obtain their values from the application through calls to {@link gl:uniform1f/2} -%% . A uniform variable (either built-in or user-defined) is considered active if it is determined -%% during the link operation that it may be accessed during program execution. Therefore, `Program' -%% should have previously been the target of a call to {@link gl:linkProgram/1} , but it is -%% not necessary for it to have been linked successfully. -%% -%% The size of the character buffer required to store the longest uniform variable name in `Program' -%% can be obtained by calling {@link gl:getProgramiv/2} with the value `?GL_ACTIVE_UNIFORM_MAX_LENGTH' -%% . This value should be used to allocate a buffer of sufficient size to store the returned -%% uniform variable name. The size of this character buffer is passed in `BufSize' , -%% and a pointer to this character buffer is passed in `Name.' -%% -%% ``gl:getActiveUniform'' returns the name of the uniform variable indicated by `Index' -%% , storing it in the character buffer specified by `Name' . The string returned will -%% be null terminated. The actual number of characters written into this buffer is returned -%% in `Length' , and this count does not include the null termination character. If the -%% length of the returned string is not required, a value of `?NULL' can be passed in -%% the `Length' argument. -%% -%% The `Type' argument will return a pointer to the uniform variable's data type. The -%% symbolic constants returned for uniform types are shown in the table below. <table><tbody> -%% <tr><td>` Returned Symbolic Contant '</td><td>` Shader Uniform Type '</td></tr></tbody> -%% <tbody><tr><td>`?GL_FLOAT'</td><td>`?float'</td></tr><tr><td>`?GL_FLOAT_VEC2' -%% </td><td>`?vec2'</td></tr><tr><td>`?GL_FLOAT_VEC3'</td><td>`?vec3'</td></tr> -%% <tr><td>`?GL_FLOAT_VEC4'</td><td>`?vec4'</td></tr><tr><td>`?GL_DOUBLE'</td> -%% <td>`?double'</td></tr><tr><td>`?GL_DOUBLE_VEC2'</td><td>`?dvec2'</td></tr> -%% <tr><td>`?GL_DOUBLE_VEC3'</td><td>`?dvec3'</td></tr><tr><td>`?GL_DOUBLE_VEC4' -%% </td><td>`?dvec4'</td></tr><tr><td>`?GL_INT'</td><td>`?int'</td></tr><tr><td> -%% `?GL_INT_VEC2'</td><td>`?ivec2'</td></tr><tr><td>`?GL_INT_VEC3'</td><td>`?ivec3' -%% </td></tr><tr><td>`?GL_INT_VEC4'</td><td>`?ivec4'</td></tr><tr><td>`?GL_UNSIGNED_INT' -%% </td><td>`?unsigned int'</td></tr><tr><td>`?GL_UNSIGNED_INT_VEC2'</td><td>`?uvec2' -%% </td></tr><tr><td>`?GL_UNSIGNED_INT_VEC3'</td><td>`?uvec3'</td></tr><tr><td>`?GL_UNSIGNED_INT_VEC4' -%% </td><td>`?uvec4'</td></tr><tr><td>`?GL_BOOL'</td><td>`?bool'</td></tr><tr> -%% <td>`?GL_BOOL_VEC2'</td><td>`?bvec2'</td></tr><tr><td>`?GL_BOOL_VEC3'</td><td> -%% `?bvec3'</td></tr><tr><td>`?GL_BOOL_VEC4'</td><td>`?bvec4'</td></tr><tr><td> -%% `?GL_FLOAT_MAT2'</td><td>`?mat2'</td></tr><tr><td>`?GL_FLOAT_MAT3'</td><td> -%% `?mat3'</td></tr><tr><td>`?GL_FLOAT_MAT4'</td><td>`?mat4'</td></tr><tr><td> -%% `?GL_FLOAT_MAT2x3'</td><td>`?mat2x3'</td></tr><tr><td>`?GL_FLOAT_MAT2x4'</td> -%% <td>`?mat2x4'</td></tr><tr><td>`?GL_FLOAT_MAT3x2'</td><td>`?mat3x2'</td></tr> -%% <tr><td>`?GL_FLOAT_MAT3x4'</td><td>`?mat3x4'</td></tr><tr><td>`?GL_FLOAT_MAT4x2' -%% </td><td>`?mat4x2'</td></tr><tr><td>`?GL_FLOAT_MAT4x3'</td><td>`?mat4x3'</td> -%% </tr><tr><td>`?GL_DOUBLE_MAT2'</td><td>`?dmat2'</td></tr><tr><td>`?GL_DOUBLE_MAT3' -%% </td><td>`?dmat3'</td></tr><tr><td>`?GL_DOUBLE_MAT4'</td><td>`?dmat4'</td></tr> -%% <tr><td>`?GL_DOUBLE_MAT2x3'</td><td>`?dmat2x3'</td></tr><tr><td>`?GL_DOUBLE_MAT2x4' -%% </td><td>`?dmat2x4'</td></tr><tr><td>`?GL_DOUBLE_MAT3x2'</td><td>`?dmat3x2'</td> -%% </tr><tr><td>`?GL_DOUBLE_MAT3x4'</td><td>`?dmat3x4'</td></tr><tr><td>`?GL_DOUBLE_MAT4x2' -%% </td><td>`?dmat4x2'</td></tr><tr><td>`?GL_DOUBLE_MAT4x3'</td><td>`?dmat4x3'</td> -%% </tr><tr><td>`?GL_SAMPLER_1D'</td><td>`?sampler1D'</td></tr><tr><td>`?GL_SAMPLER_2D' -%% </td><td>`?sampler2D'</td></tr><tr><td>`?GL_SAMPLER_3D'</td><td>`?sampler3D' -%% </td></tr><tr><td>`?GL_SAMPLER_CUBE'</td><td>`?samplerCube'</td></tr><tr><td>`?GL_SAMPLER_1D_SHADOW' -%% </td><td>`?sampler1DShadow'</td></tr><tr><td>`?GL_SAMPLER_2D_SHADOW'</td><td>`?sampler2DShadow' -%% </td></tr><tr><td>`?GL_SAMPLER_1D_ARRAY'</td><td>`?sampler1DArray'</td></tr><tr> -%% <td>`?GL_SAMPLER_2D_ARRAY'</td><td>`?sampler2DArray'</td></tr><tr><td>`?GL_SAMPLER_1D_ARRAY_SHADOW' -%% </td><td>`?sampler1DArrayShadow'</td></tr><tr><td>`?GL_SAMPLER_2D_ARRAY_SHADOW'</td> -%% <td>`?sampler2DArrayShadow'</td></tr><tr><td>`?GL_SAMPLER_2D_MULTISAMPLE'</td><td> -%% `?sampler2DMS'</td></tr><tr><td>`?GL_SAMPLER_2D_MULTISAMPLE_ARRAY'</td><td>`?sampler2DMSArray' -%% </td></tr><tr><td>`?GL_SAMPLER_CUBE_SHADOW'</td><td>`?samplerCubeShadow'</td></tr> -%% <tr><td>`?GL_SAMPLER_BUFFER'</td><td>`?samplerBuffer'</td></tr><tr><td>`?GL_SAMPLER_2D_RECT' -%% </td><td>`?sampler2DRect'</td></tr><tr><td>`?GL_SAMPLER_2D_RECT_SHADOW'</td><td> -%% `?sampler2DRectShadow'</td></tr><tr><td>`?GL_INT_SAMPLER_1D'</td><td>`?isampler1D' -%% </td></tr><tr><td>`?GL_INT_SAMPLER_2D'</td><td>`?isampler2D'</td></tr><tr><td>`?GL_INT_SAMPLER_3D' -%% </td><td>`?isampler3D'</td></tr><tr><td>`?GL_INT_SAMPLER_CUBE'</td><td>`?isamplerCube' -%% </td></tr><tr><td>`?GL_INT_SAMPLER_1D_ARRAY'</td><td>`?isampler1DArray'</td></tr> -%% <tr><td>`?GL_INT_SAMPLER_2D_ARRAY'</td><td>`?isampler2DArray'</td></tr><tr><td>`?GL_INT_SAMPLER_2D_MULTISAMPLE' -%% </td><td>`?isampler2DMS'</td></tr><tr><td>`?GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY'</td> -%% <td>`?isampler2DMSArray'</td></tr><tr><td>`?GL_INT_SAMPLER_BUFFER'</td><td>`?isamplerBuffer' -%% </td></tr><tr><td>`?GL_INT_SAMPLER_2D_RECT'</td><td>`?isampler2DRect'</td></tr><tr> -%% <td>`?GL_UNSIGNED_INT_SAMPLER_1D'</td><td>`?usampler1D'</td></tr><tr><td>`?GL_UNSIGNED_INT_SAMPLER_2D' -%% </td><td>`?usampler2D'</td></tr><tr><td>`?GL_UNSIGNED_INT_SAMPLER_3D'</td><td>`?usampler3D' -%% </td></tr><tr><td>`?GL_UNSIGNED_INT_SAMPLER_CUBE'</td><td>`?usamplerCube'</td></tr> -%% <tr><td>`?GL_UNSIGNED_INT_SAMPLER_1D_ARRAY'</td><td>`?usampler2DArray'</td></tr> -%% <tr><td>`?GL_UNSIGNED_INT_SAMPLER_2D_ARRAY'</td><td>`?usampler2DArray'</td></tr> -%% <tr><td>`?GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE'</td><td>`?usampler2DMS'</td></tr> -%% <tr><td>`?GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY'</td><td>`?usampler2DMSArray' -%% </td></tr><tr><td>`?GL_UNSIGNED_INT_SAMPLER_BUFFER'</td><td>`?usamplerBuffer'</td> -%% </tr><tr><td>`?GL_UNSIGNED_INT_SAMPLER_2D_RECT'</td><td>`?usampler2DRect'</td></tr> -%% <tr><td>`?GL_IMAGE_1D'</td><td>`?image1D'</td></tr><tr><td>`?GL_IMAGE_2D'</td> -%% <td>`?image2D'</td></tr><tr><td>`?GL_IMAGE_3D'</td><td>`?image3D'</td></tr> -%% <tr><td>`?GL_IMAGE_2D_RECT'</td><td>`?image2DRect'</td></tr><tr><td>`?GL_IMAGE_CUBE' -%% </td><td>`?imageCube'</td></tr><tr><td>`?GL_IMAGE_BUFFER'</td><td>`?imageBuffer' -%% </td></tr><tr><td>`?GL_IMAGE_1D_ARRAY'</td><td>`?image1DArray'</td></tr><tr><td> -%% `?GL_IMAGE_2D_ARRAY'</td><td>`?image2DArray'</td></tr><tr><td>`?GL_IMAGE_2D_MULTISAMPLE' -%% </td><td>`?image2DMS'</td></tr><tr><td>`?GL_IMAGE_2D_MULTISAMPLE_ARRAY'</td><td> -%% `?image2DMSArray'</td></tr><tr><td>`?GL_INT_IMAGE_1D'</td><td>`?iimage1D'</td> -%% </tr><tr><td>`?GL_INT_IMAGE_2D'</td><td>`?iimage2D'</td></tr><tr><td>`?GL_INT_IMAGE_3D' -%% </td><td>`?iimage3D'</td></tr><tr><td>`?GL_INT_IMAGE_2D_RECT'</td><td>`?iimage2DRect' -%% </td></tr><tr><td>`?GL_INT_IMAGE_CUBE'</td><td>`?iimageCube'</td></tr><tr><td>`?GL_INT_IMAGE_BUFFER' -%% </td><td>`?iimageBuffer'</td></tr><tr><td>`?GL_INT_IMAGE_1D_ARRAY'</td><td>`?iimage1DArray' -%% </td></tr><tr><td>`?GL_INT_IMAGE_2D_ARRAY'</td><td>`?iimage2DArray'</td></tr><tr> -%% <td>`?GL_INT_IMAGE_2D_MULTISAMPLE'</td><td>`?iimage2DMS'</td></tr><tr><td>`?GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY' -%% </td><td>`?iimage2DMSArray'</td></tr><tr><td>`?GL_UNSIGNED_INT_IMAGE_1D'</td><td> -%% `?uimage1D'</td></tr><tr><td>`?GL_UNSIGNED_INT_IMAGE_2D'</td><td>`?uimage2D' -%% </td></tr><tr><td>`?GL_UNSIGNED_INT_IMAGE_3D'</td><td>`?uimage3D'</td></tr><tr><td> -%% `?GL_UNSIGNED_INT_IMAGE_2D_RECT'</td><td>`?uimage2DRect'</td></tr><tr><td>`?GL_UNSIGNED_INT_IMAGE_CUBE' -%% </td><td>`?uimageCube'</td></tr><tr><td>`?GL_UNSIGNED_INT_IMAGE_BUFFER'</td><td> -%% `?uimageBuffer'</td></tr><tr><td>`?GL_UNSIGNED_INT_IMAGE_1D_ARRAY'</td><td>`?uimage1DArray' -%% </td></tr><tr><td>`?GL_UNSIGNED_INT_IMAGE_2D_ARRAY'</td><td>`?uimage2DArray'</td> -%% </tr><tr><td>`?GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE'</td><td>`?uimage2DMS'</td></tr> -%% <tr><td>`?GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY'</td><td>`?uimage2DMSArray'</td> -%% </tr><tr><td>`?GL_UNSIGNED_INT_ATOMIC_COUNTER'</td><td>`?atomic_uint'</td></tr></tbody> -%% </table> -%% -%% If one or more elements of an array are active, the name of the array is returned in `Name' -%% , the type is returned in `Type' , and the `Size' parameter returns the highest -%% array element index used, plus one, as determined by the compiler and/or linker. Only -%% one active uniform variable will be reported for a uniform array. -%% -%% Uniform variables that are declared as structures or arrays of structures will not be -%% returned directly by this function. Instead, each of these uniform variables will be reduced -%% to its fundamental components containing the "." and "[]" operators such that each of -%% the names is valid as an argument to {@link gl:getUniformLocation/2} . Each of these reduced -%% uniform variables is counted as one active uniform variable and is assigned an index. -%% A valid name cannot be a structure, an array of structures, or a subcomponent of a vector -%% or matrix. -%% -%% The size of the uniform variable will be returned in `Size' . Uniform variables other -%% than arrays will have a size of 1. Structures and arrays of structures will be reduced -%% as described earlier, such that each of the names returned will be a data type in the -%% earlier list. If this reduction results in an array, the size returned will be as described -%% for uniform arrays; otherwise, the size returned will be 1. -%% -%% The list of active uniform variables may include both built-in uniform variables (which -%% begin with the prefix "gl_") as well as user-defined uniform variable names. -%% -%% This function will return as much information as it can about the specified active uniform -%% variable. If no information is available, `Length' will be 0, and `Name' will -%% be an empty string. This situation could occur if this function is called after a link -%% operation that failed. If an error occurs, the return values `Length' , `Size' , `Type' -%% , and `Name' will be unmodified. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveUniform.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml">external</a> documentation. -spec getActiveUniform(Program, Index, BufSize) -> {Size :: integer(),Type :: enum(),Name :: string()} when Program :: integer(),Index :: integer(),BufSize :: integer(). getActiveUniform(Program,Index,BufSize) -> call(5457, <<Program:?GLuint,Index:?GLuint,BufSize:?GLsizei>>). @@ -11047,13 +4554,7 @@ getActiveUniform(Program,Index,BufSize) -> %% number of shader names that may be returned in `Shaders' is specified by `MaxCount' %% . %% -%% If the number of names actually returned is not required (for instance, if it has just -%% been obtained by calling {@link gl:getProgramiv/2} ), a value of `?NULL' may be passed -%% for count. If no shader objects are attached to `Program' , a value of 0 will be returned -%% in `Count' . The actual number of attached shaders can be obtained by calling {@link gl:getProgramiv/2} -%% with the value `?GL_ATTACHED_SHADERS'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetAttachedShaders.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetAttachedShaders.xhtml">external</a> documentation. -spec getAttachedShaders(Program, MaxCount) -> [integer()] when Program :: integer(),MaxCount :: integer(). getAttachedShaders(Program,MaxCount) -> call(5458, <<Program:?GLuint,MaxCount:?GLsizei>>). @@ -11067,17 +4568,7 @@ getAttachedShaders(Program,MaxCount) -> %% attribute variable is not an active attribute in the specified program object or if `Name' %% starts with the reserved prefix "gl_", a value of -1 is returned. %% -%% The association between an attribute variable name and a generic attribute index can be -%% specified at any time by calling {@link gl:bindAttribLocation/3} . Attribute bindings do -%% not go into effect until {@link gl:linkProgram/1} is called. After a program object has -%% been linked successfully, the index values for attribute variables remain fixed until -%% the next link command occurs. The attribute values can only be queried after a link if -%% the link was successful. ``gl:getAttribLocation'' returns the binding that actually -%% went into effect the last time {@link gl:linkProgram/1} was called for the specified program -%% object. Attribute bindings that have been specified since the last link operation are -%% not returned by ``gl:getAttribLocation''. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetAttribLocation.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetAttribLocation.xhtml">external</a> documentation. -spec getAttribLocation(Program, Name) -> integer() when Program :: integer(),Name :: string(). getAttribLocation(Program,Name) -> NameLen = length(Name), @@ -11088,68 +4579,7 @@ getAttribLocation(Program,Name) -> %% ``gl:getProgram'' returns in `Params' the value of a parameter for a specific program %% object. The following parameters are defined: %% -%% `?GL_DELETE_STATUS': `Params' returns `?GL_TRUE' if `Program' is currently -%% flagged for deletion, and `?GL_FALSE' otherwise. -%% -%% `?GL_LINK_STATUS': `Params' returns `?GL_TRUE' if the last link operation -%% on `Program' was successful, and `?GL_FALSE' otherwise. -%% -%% `?GL_VALIDATE_STATUS': `Params' returns `?GL_TRUE' or if the last validation -%% operation on `Program' was successful, and `?GL_FALSE' otherwise. -%% -%% `?GL_INFO_LOG_LENGTH': `Params' returns the number of characters in the information -%% log for `Program' including the null termination character (i.e., the size of the -%% character buffer required to store the information log). If `Program' has no information -%% log, a value of 0 is returned. -%% -%% `?GL_ATTACHED_SHADERS': `Params' returns the number of shader objects attached -%% to `Program' . -%% -%% `?GL_ACTIVE_ATOMIC_COUNTER_BUFFERS': `Params' returns the number of active attribute -%% atomic counter buffers used by `Program' . -%% -%% `?GL_ACTIVE_ATTRIBUTES': `Params' returns the number of active attribute variables -%% for `Program' . -%% -%% `?GL_ACTIVE_ATTRIBUTE_MAX_LENGTH': `Params' returns the length of the longest -%% active attribute name for `Program' , including the null termination character (i.e., -%% the size of the character buffer required to store the longest attribute name). If no -%% active attributes exist, 0 is returned. -%% -%% `?GL_ACTIVE_UNIFORMS': `Params' returns the number of active uniform variables -%% for `Program' . -%% -%% `?GL_ACTIVE_UNIFORM_MAX_LENGTH': `Params' returns the length of the longest -%% active uniform variable name for `Program' , including the null termination character -%% (i.e., the size of the character buffer required to store the longest uniform variable -%% name). If no active uniform variables exist, 0 is returned. -%% -%% `?GL_PROGRAM_BINARY_LENGTH': `Params' returns the length of the program binary, -%% in bytes that will be returned by a call to {@link gl:getProgramBinary/2} . When a progam's -%% `?GL_LINK_STATUS' is `?GL_FALSE', its program binary length is zero. -%% -%% `?GL_TRANSFORM_FEEDBACK_BUFFER_MODE': `Params' returns a symbolic constant indicating -%% the buffer mode used when transform feedback is active. This may be `?GL_SEPARATE_ATTRIBS' -%% or `?GL_INTERLEAVED_ATTRIBS'. -%% -%% `?GL_TRANSFORM_FEEDBACK_VARYINGS': `Params' returns the number of varying variables -%% to capture in transform feedback mode for the program. -%% -%% `?GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH': `Params' returns the length of -%% the longest variable name to be used for transform feedback, including the null-terminator. -%% -%% -%% `?GL_GEOMETRY_VERTICES_OUT': `Params' returns the maximum number of vertices -%% that the geometry shader in `Program' will output. -%% -%% `?GL_GEOMETRY_INPUT_TYPE': `Params' returns a symbolic constant indicating the -%% primitive type accepted as input to the geometry shader contained in `Program' . -%% -%% `?GL_GEOMETRY_OUTPUT_TYPE': `Params' returns a symbolic constant indicating -%% the primitive type that will be output by the geometry shader contained in `Program' . -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetProgram.xhtml">external</a> documentation. -spec getProgramiv(Program, Pname) -> integer() when Program :: integer(),Pname :: enum(). getProgramiv(Program,Pname) -> call(5460, <<Program:?GLuint,Pname:?GLenum>>). @@ -11160,21 +4590,7 @@ getProgramiv(Program,Pname) -> %% The information log for a program object is modified when the program object is linked %% or validated. The string that is returned will be null terminated. %% -%% ``gl:getProgramInfoLog'' returns in `InfoLog' as much of the information log as -%% it can, up to a maximum of `MaxLength' characters. The number of characters actually -%% returned, excluding the null termination character, is specified by `Length' . If -%% the length of the returned string is not required, a value of `?NULL' can be passed -%% in the `Length' argument. The size of the buffer required to store the returned -%% information log can be obtained by calling {@link gl:getProgramiv/2} with the value `?GL_INFO_LOG_LENGTH' -%% . -%% -%% The information log for a program object is either an empty string, or a string containing -%% information about the last link operation, or a string containing information about the -%% last validation operation. It may contain diagnostic messages, warning messages, and -%% other information. When a program object is created, its information log will be a string -%% of length 0. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramInfoLog.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetProgramInfoLog.xhtml">external</a> documentation. -spec getProgramInfoLog(Program, BufSize) -> string() when Program :: integer(),BufSize :: integer(). getProgramInfoLog(Program,BufSize) -> call(5461, <<Program:?GLuint,BufSize:?GLsizei>>). @@ -11184,28 +4600,7 @@ getProgramInfoLog(Program,BufSize) -> %% ``gl:getShader'' returns in `Params' the value of a parameter for a specific %% shader object. The following parameters are defined: %% -%% `?GL_SHADER_TYPE': `Params' returns `?GL_VERTEX_SHADER' if `Shader' -%% is a vertex shader object, `?GL_GEOMETRY_SHADER' if `Shader' is a geometry -%% shader object, and `?GL_FRAGMENT_SHADER' if `Shader' is a fragment shader -%% object. -%% -%% `?GL_DELETE_STATUS': `Params' returns `?GL_TRUE' if `Shader' is -%% currently flagged for deletion, and `?GL_FALSE' otherwise. -%% -%% `?GL_COMPILE_STATUS': `Params' returns `?GL_TRUE' if the last compile -%% operation on `Shader' was successful, and `?GL_FALSE' otherwise. -%% -%% `?GL_INFO_LOG_LENGTH': `Params' returns the number of characters in the information -%% log for `Shader' including the null termination character (i.e., the size of -%% the character buffer required to store the information log). If `Shader' has -%% no information log, a value of 0 is returned. -%% -%% `?GL_SHADER_SOURCE_LENGTH': `Params' returns the length of the concatenation -%% of the source strings that make up the shader source for the `Shader' , including -%% the null termination character. (i.e., the size of the character buffer required to -%% store the shader source). If no source code exists, 0 is returned. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetShader.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetShader.xhtml">external</a> documentation. -spec getShaderiv(Shader, Pname) -> integer() when Shader :: integer(),Pname :: enum(). getShaderiv(Shader,Pname) -> call(5462, <<Shader:?GLuint,Pname:?GLenum>>). @@ -11216,19 +4611,7 @@ getShaderiv(Shader,Pname) -> %% The information log for a shader object is modified when the shader is compiled. The %% string that is returned will be null terminated. %% -%% ``gl:getShaderInfoLog'' returns in `InfoLog' as much of the information log as -%% it can, up to a maximum of `MaxLength' characters. The number of characters actually -%% returned, excluding the null termination character, is specified by `Length' . If -%% the length of the returned string is not required, a value of `?NULL' can be passed -%% in the `Length' argument. The size of the buffer required to store the returned -%% information log can be obtained by calling {@link gl:getShaderiv/2} with the value `?GL_INFO_LOG_LENGTH' -%% . -%% -%% The information log for a shader object is a string that may contain diagnostic messages, -%% warning messages, and other information about the last compile operation. When a shader -%% object is created, its information log will be a string of length 0. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetShaderInfoLog.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetShaderInfoLog.xhtml">external</a> documentation. -spec getShaderInfoLog(Shader, BufSize) -> string() when Shader :: integer(),BufSize :: integer(). getShaderInfoLog(Shader,BufSize) -> call(5463, <<Shader:?GLuint,BufSize:?GLsizei>>). @@ -11240,15 +4623,7 @@ getShaderInfoLog(Shader,BufSize) -> %% are the result of a previous call to {@link gl:shaderSource/2} . The string returned by %% the function will be null terminated. %% -%% ``gl:getShaderSource'' returns in `Source' as much of the source code string as -%% it can, up to a maximum of `BufSize' characters. The number of characters actually -%% returned, excluding the null termination character, is specified by `Length' . If -%% the length of the returned string is not required, a value of `?NULL' can be passed -%% in the `Length' argument. The size of the buffer required to store the returned source -%% code string can be obtained by calling {@link gl:getShaderiv/2} with the value `?GL_SHADER_SOURCE_LENGTH' -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetShaderSource.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetShaderSource.xhtml">external</a> documentation. -spec getShaderSource(Shader, BufSize) -> string() when Shader :: integer(),BufSize :: integer(). getShaderSource(Shader,BufSize) -> call(5464, <<Shader:?GLuint,BufSize:?GLsizei>>). @@ -11263,25 +4638,7 @@ getShaderSource(Shader,BufSize) -> %% in `Program' , if `Name' starts with the reserved prefix "gl_", or if `Name' %% is associated with an atomic counter or a named uniform block. %% -%% Uniform variables that are structures or arrays of structures may be queried by calling ``gl:getUniformLocation'' -%% for each field within the structure. The array element operator "[]" and the structure -%% field operator "." may be used in `Name' in order to select elements within an array -%% or fields within a structure. The result of using these operators is not allowed to be -%% another structure, an array of structures, or a subcomponent of a vector or a matrix. -%% Except if the last part of `Name' indicates a uniform variable array, the location -%% of the first element of an array can be retrieved by using the name of the array, or by -%% using the name appended by "[0]". -%% -%% The actual locations assigned to uniform variables are not known until the program object -%% is linked successfully. After linking has occurred, the command ``gl:getUniformLocation'' -%% can be used to obtain the location of a uniform variable. This location value can then -%% be passed to {@link gl:uniform1f/2} to set the value of the uniform variable or to {@link gl:getUniformfv/2} -%% in order to query the current value of the uniform variable. After a program object has -%% been linked successfully, the index values for uniform variables remain fixed until the -%% next link command occurs. Uniform variable locations and values can only be queried after -%% a link if the link was successful. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetUniformLocation.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetUniformLocation.xhtml">external</a> documentation. -spec getUniformLocation(Program, Name) -> integer() when Program :: integer(),Name :: string(). getUniformLocation(Program,Name) -> NameLen = length(Name), @@ -11300,15 +4657,7 @@ getUniformLocation(Program,Name) -> %% The values for uniform variables declared as a matrix will be returned in column major %% order. %% -%% The locations assigned to uniform variables are not known until the program object is -%% linked. After linking has occurred, the command {@link gl:getUniformLocation/2} can be -%% used to obtain the location of a uniform variable. This location value can then be passed -%% to ``gl:getUniform'' in order to query the current value of the uniform variable. After -%% a program object has been linked successfully, the index values for uniform variables -%% remain fixed until the next link command occurs. The uniform variable values can only -%% be queried after a link if the link was successful. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetUniform.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetUniform.xhtml">external</a> documentation. -spec getUniformfv(Program, Location) -> matrix() when Program :: integer(),Location :: integer(). getUniformfv(Program,Location) -> call(5466, <<Program:?GLuint,Location:?GLint>>). @@ -11325,63 +4674,7 @@ getUniformiv(Program,Location) -> %% parameter. The generic vertex attribute to be queried is specified by `Index' , and %% the parameter to be queried is specified by `Pname' . %% -%% The accepted parameter names are as follows: -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING': `Params' returns a single value, the -%% name of the buffer object currently bound to the binding point corresponding to generic -%% vertex attribute array `Index' . If no buffer object is bound, 0 is returned. The -%% initial value is 0. -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_ENABLED': `Params' returns a single value that is non-zero -%% (true) if the vertex attribute array for `Index' is enabled and 0 (false) if it is -%% disabled. The initial value is `?GL_FALSE'. -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_SIZE': `Params' returns a single value, the size of -%% the vertex attribute array for `Index' . The size is the number of values for each -%% element of the vertex attribute array, and it will be 1, 2, 3, or 4. The initial value -%% is 4. -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_STRIDE': `Params' returns a single value, the array -%% stride for (number of bytes between successive elements in) the vertex attribute array -%% for `Index' . A value of 0 indicates that the array elements are stored sequentially -%% in memory. The initial value is 0. -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_TYPE': `Params' returns a single value, a symbolic -%% constant indicating the array type for the vertex attribute array for `Index' . Possible -%% values are `?GL_BYTE', `?GL_UNSIGNED_BYTE', `?GL_SHORT', `?GL_UNSIGNED_SHORT' -%% , `?GL_INT', `?GL_UNSIGNED_INT', `?GL_FLOAT', and `?GL_DOUBLE'. The -%% initial value is `?GL_FLOAT'. -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_NORMALIZED': `Params' returns a single value that is -%% non-zero (true) if fixed-point data types for the vertex attribute array indicated by `Index' -%% are normalized when they are converted to floating point, and 0 (false) otherwise. The -%% initial value is `?GL_FALSE'. -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_INTEGER': `Params' returns a single value that is non-zero -%% (true) if fixed-point data types for the vertex attribute array indicated by `Index' -%% have integer data types, and 0 (false) otherwise. The initial value is 0 (`?GL_FALSE'). -%% -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_DIVISOR': `Params' returns a single value that is the -%% frequency divisor used for instanced rendering. See {@link gl:vertexAttribDivisor/2} . The -%% initial value is 0. -%% -%% `?GL_CURRENT_VERTEX_ATTRIB': `Params' returns four values that represent the -%% current value for the generic vertex attribute specified by index. Generic vertex attribute -%% 0 is unique in that it has no current state, so an error will be generated if `Index' -%% is 0. The initial value for all other generic vertex attributes is (0,0,0,1). -%% -%% ``gl:getVertexAttribdv'' and ``gl:getVertexAttribfv'' return the current attribute -%% values as four single-precision floating-point values; ``gl:getVertexAttribiv'' reads -%% them as floating-point values and converts them to four integer values; ``gl:getVertexAttribIiv'' -%% and ``gl:getVertexAttribIuiv'' read and return them as signed or unsigned integer values, -%% respectively; ``gl:getVertexAttribLdv'' reads and returns them as four double-precision -%% floating-point values. -%% -%% All of the parameters except `?GL_CURRENT_VERTEX_ATTRIB' represent state stored in -%% the currently bound vertex array object. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetVertexAttrib.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetVertexAttrib.xhtml">external</a> documentation. -spec getVertexAttribdv(Index, Pname) -> {float(),float(),float(),float()} when Index :: integer(),Pname :: enum(). getVertexAttribdv(Index,Pname) -> call(5468, <<Index:?GLuint,Pname:?GLenum>>). @@ -11405,7 +4698,7 @@ getVertexAttribiv(Index,Pname) -> %% . If `Program' is zero or a non-zero value that is not the name of a program object, %% or if an error occurs, ``gl:isProgram'' returns `?GL_FALSE'. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsProgram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsProgram.xhtml">external</a> documentation. -spec isProgram(Program) -> 0|1 when Program :: integer(). isProgram(Program) -> call(5471, <<Program:?GLuint>>). @@ -11417,7 +4710,7 @@ isProgram(Program) -> %% . If `Shader' is zero or a non-zero value that is not the name of a shader object, %% or if an error occurs, ``gl:isShader '' returns `?GL_FALSE'. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsShader.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsShader.xhtml">external</a> documentation. -spec isShader(Shader) -> 0|1 when Shader :: integer(). isShader(Shader) -> call(5472, <<Shader:?GLuint>>). @@ -11433,111 +4726,7 @@ isShader(Shader) -> %% they will be used to create an executable that will run on the programmable fragment processor. %% %% -%% The status of the link operation will be stored as part of the program object's state. -%% This value will be set to `?GL_TRUE' if the program object was linked without errors -%% and is ready for use, and `?GL_FALSE' otherwise. It can be queried by calling {@link gl:getProgramiv/2} -%% with arguments `Program' and `?GL_LINK_STATUS'. -%% -%% As a result of a successful link operation, all active user-defined uniform variables -%% belonging to `Program' will be initialized to 0, and each of the program object's -%% active uniform variables will be assigned a location that can be queried by calling {@link gl:getUniformLocation/2} -%% . Also, any active user-defined attribute variables that have not been bound to a generic -%% vertex attribute index will be bound to one at this time. -%% -%% Linking of a program object can fail for a number of reasons as specified in the `OpenGL Shading Language Specification' -%% . The following lists some of the conditions that will cause a link error. -%% -%% The number of active attribute variables supported by the implementation has been exceeded. -%% -%% -%% The storage limit for uniform variables has been exceeded. -%% -%% The number of active uniform variables supported by the implementation has been exceeded. -%% -%% The `main' function is missing for the vertex, geometry or fragment shader. -%% -%% A varying variable actually used in the fragment shader is not declared in the same way -%% (or is not declared at all) in the vertex shader, or geometry shader shader if present. -%% -%% A reference to a function or variable name is unresolved. -%% -%% A shared global is declared with two different types or two different initial values. -%% -%% One or more of the attached shader objects has not been successfully compiled. -%% -%% Binding a generic attribute matrix caused some rows of the matrix to fall outside the -%% allowed maximum of `?GL_MAX_VERTEX_ATTRIBS'. -%% -%% Not enough contiguous vertex attribute slots could be found to bind attribute matrices. -%% -%% The program object contains objects to form a fragment shader but does not contain objects -%% to form a vertex shader. -%% -%% The program object contains objects to form a geometry shader but does not contain objects -%% to form a vertex shader. -%% -%% The program object contains objects to form a geometry shader and the input primitive -%% type, output primitive type, or maximum output vertex count is not specified in any compiled -%% geometry shader object. -%% -%% The program object contains objects to form a geometry shader and the input primitive -%% type, output primitive type, or maximum output vertex count is specified differently in -%% multiple geometry shader objects. -%% -%% The number of active outputs in the fragment shader is greater than the value of `?GL_MAX_DRAW_BUFFERS' -%% . -%% -%% The program has an active output assigned to a location greater than or equal to the value -%% of `?GL_MAX_DUAL_SOURCE_DRAW_BUFFERS' and has an active output assigned an index -%% greater than or equal to one. -%% -%% More than one varying out variable is bound to the same number and index. -%% -%% The explicit binding assigments do not leave enough space for the linker to automatically -%% assign a location for a varying out array, which requires multiple contiguous locations. -%% -%% The `Count' specified by {@link gl:transformFeedbackVaryings/3} is non-zero, but the -%% program object has no vertex or geometry shader. -%% -%% Any variable name specified to {@link gl:transformFeedbackVaryings/3} in the `Varyings' -%% array is not declared as an output in the vertex shader (or the geometry shader, if active). -%% -%% -%% Any two entries in the `Varyings' array given {@link gl:transformFeedbackVaryings/3} -%% specify the same varying variable. -%% -%% The total number of components to capture in any transform feedback varying variable is -%% greater than the constant `?GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS' and the -%% buffer mode is `?SEPARATE_ATTRIBS'. -%% -%% When a program object has been successfully linked, the program object can be made part -%% of current state by calling {@link gl:useProgram/1} . Whether or not the link operation -%% was successful, the program object's information log will be overwritten. The information -%% log can be retrieved by calling {@link gl:getProgramInfoLog/2} . -%% -%% ``gl:linkProgram'' will also install the generated executables as part of the current -%% rendering state if the link operation was successful and the specified program object -%% is already currently in use as a result of a previous call to {@link gl:useProgram/1} . -%% If the program object currently in use is relinked unsuccessfully, its link status will -%% be set to `?GL_FALSE' , but the executables and associated state will remain part -%% of the current state until a subsequent call to ``gl:useProgram'' removes it from use. -%% After it is removed from use, it cannot be made part of current state until it has been -%% successfully relinked. -%% -%% If `Program' contains shader objects of type `?GL_VERTEX_SHADER', and optionally -%% of type `?GL_GEOMETRY_SHADER', but does not contain shader objects of type `?GL_FRAGMENT_SHADER' -%% , the vertex shader executable will be installed on the programmable vertex processor, -%% the geometry shader executable, if present, will be installed on the programmable geometry -%% processor, but no executable will be installed on the fragment processor. The results -%% of rasterizing primitives with such a program will be undefined. -%% -%% The program object's information log is updated and the program is generated at the time -%% of the link operation. After the link operation, applications are free to modify attached -%% shader objects, compile attached shader objects, detach shader objects, delete shader -%% objects, and attach additional shader objects. None of these operations affects the information -%% log or the program that is part of the program object. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLinkProgram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glLinkProgram.xhtml">external</a> documentation. -spec linkProgram(Program) -> 'ok' when Program :: integer(). linkProgram(Program) -> cast(5473, <<Program:?GLuint>>). @@ -11555,7 +4744,7 @@ linkProgram(Program) -> %% than 0 to indicate that the string is null terminated. The source code strings are not %% scanned or parsed at this time; they are simply copied into the specified shader object. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glShaderSource.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glShaderSource.xhtml">external</a> documentation. -spec shaderSource(Shader, String) -> 'ok' when Shader :: integer(),String :: iolist(). shaderSource(Shader,String) -> StringTemp = list_to_binary([[Str|[0]] || Str <- String ]), @@ -11570,35 +4759,7 @@ shaderSource(Shader,String) -> %% compiling the shader objects with {@link gl:compileShader/1} , and successfully linking %% the program object with {@link gl:linkProgram/1} . %% -%% A program object will contain an executable that will run on the vertex processor if -%% it contains one or more shader objects of type `?GL_VERTEX_SHADER' that have been -%% successfully compiled and linked. A program object will contain an executable that will -%% run on the geometry processor if it contains one or more shader objects of type `?GL_GEOMETRY_SHADER' -%% that have been successfully compiled and linked. Similarly, a program object will contain -%% an executable that will run on the fragment processor if it contains one or more shader -%% objects of type `?GL_FRAGMENT_SHADER' that have been successfully compiled and -%% linked. -%% -%% While a program object is in use, applications are free to modify attached shader objects, -%% compile attached shader objects, attach additional shader objects, and detach or delete -%% shader objects. None of these operations will affect the executables that are part of -%% the current state. However, relinking the program object that is currently in use will -%% install the program object as part of the current rendering state if the link operation -%% was successful (see {@link gl:linkProgram/1} ). If the program object currently in use -%% is relinked unsuccessfully, its link status will be set to `?GL_FALSE', but the -%% executables and associated state will remain part of the current state until a subsequent -%% call to ``gl:useProgram'' removes it from use. After it is removed from use, it cannot -%% be made part of current state until it has been successfully relinked. -%% -%% If `Program' is zero, then the current rendering state refers to an `invalid' -%% program object and the results of shader execution are undefined. However, this is not -%% an error. -%% -%% If `Program' does not contain shader objects of type `?GL_FRAGMENT_SHADER', -%% an executable will be installed on the vertex, and possibly geometry processors, but -%% the results of fragment shader execution will be undefined. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glUseProgram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glUseProgram.xhtml">external</a> documentation. -spec useProgram(Program) -> 'ok' when Program :: integer(). useProgram(Program) -> cast(5475, <<Program:?GLuint>>). @@ -11611,62 +4772,7 @@ useProgram(Program) -> %% on the program object that was made part of current state by calling {@link gl:useProgram/1} %% . %% -%% The commands ``gl:uniform{1|2|3|4}{f|i|ui}'' are used to change the value of the uniform -%% variable specified by `Location' using the values passed as arguments. The number -%% specified in the command should match the number of components in the data type of the -%% specified uniform variable (e.g., `1' for float, int, unsigned int, bool; `2' -%% for vec2, ivec2, uvec2, bvec2, etc.). The suffix `f' indicates that floating-point -%% values are being passed; the suffix `i' indicates that integer values are being passed; -%% the suffix `ui' indicates that unsigned integer values are being passed, and this -%% type should also match the data type of the specified uniform variable. The `i' variants -%% of this function should be used to provide values for uniform variables defined as int, ivec2 -%% , ivec3, ivec4, or arrays of these. The `ui' variants of this function should be -%% used to provide values for uniform variables defined as unsigned int, uvec2, uvec3, uvec4, -%% or arrays of these. The `f' variants should be used to provide values for uniform -%% variables of type float, vec2, vec3, vec4, or arrays of these. Either the `i', `ui' -%% or `f' variants may be used to provide values for uniform variables of type bool, bvec2 -%% , bvec3, bvec4, or arrays of these. The uniform variable will be set to false if the input -%% value is 0 or 0.0f, and it will be set to true otherwise. -%% -%% All active uniform variables defined in a program object are initialized to 0 when the -%% program object is linked successfully. They retain the values assigned to them by a call -%% to ``gl:uniform '' until the next successful link operation occurs on the program object, -%% when they are once again initialized to 0. -%% -%% The commands ``gl:uniform{1|2|3|4}{f|i|ui}v'' can be used to modify a single uniform -%% variable or a uniform variable array. These commands pass a count and a pointer to the -%% values to be loaded into a uniform variable or a uniform variable array. A count of 1 -%% should be used if modifying the value of a single uniform variable, and a count of 1 or -%% greater can be used to modify an entire array or part of an array. When loading `n' -%% elements starting at an arbitrary position `m' in a uniform variable array, elements -%% `m' + `n' - 1 in the array will be replaced with the new values. If `M' + `N' -%% - 1 is larger than the size of the uniform variable array, values for all array elements -%% beyond the end of the array will be ignored. The number specified in the name of the command -%% indicates the number of components for each element in `Value' , and it should match -%% the number of components in the data type of the specified uniform variable (e.g., `1' -%% for float, int, bool; `2' for vec2, ivec2, bvec2, etc.). The data type specified -%% in the name of the command must match the data type for the specified uniform variable -%% as described previously for ``gl:uniform{1|2|3|4}{f|i|ui}''. -%% -%% For uniform variable arrays, each element of the array is considered to be of the type -%% indicated in the name of the command (e.g., ``gl:uniform3f'' or ``gl:uniform3fv'' -%% can be used to load a uniform variable array of type vec3). The number of elements of -%% the uniform variable array to be modified is specified by `Count' -%% -%% The commands ``gl:uniformMatrix{2|3|4|2x3|3x2|2x4|4x2|3x4|4x3}fv'' are used to modify -%% a matrix or an array of matrices. The numbers in the command name are interpreted as the -%% dimensionality of the matrix. The number `2' indicates a 2 × 2 matrix (i.e., 4 values), -%% the number `3' indicates a 3 × 3 matrix (i.e., 9 values), and the number `4' -%% indicates a 4 × 4 matrix (i.e., 16 values). Non-square matrix dimensionality is explicit, -%% with the first number representing the number of columns and the second number representing -%% the number of rows. For example, `2x4' indicates a 2 × 4 matrix with 2 columns and -%% 4 rows (i.e., 8 values). If `Transpose' is `?GL_FALSE', each matrix is assumed -%% to be supplied in column major order. If `Transpose' is `?GL_TRUE', each matrix -%% is assumed to be supplied in row major order. The `Count' argument indicates the -%% number of matrices to be passed. A count of 1 should be used if modifying the value of -%% a single matrix, and a count greater than 1 can be used to modify an array of matrices. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glUniform.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glUniform.xhtml">external</a> documentation. -spec uniform1f(Location, V0) -> 'ok' when Location :: integer(),V0 :: float(). uniform1f(Location,V0) -> cast(5476, <<Location:?GLint,V0:?GLfloat>>). @@ -11811,19 +4917,7 @@ uniformMatrix4fv(Location,Transpose,Value) -> %% a way for OpenGL implementers to convey more information about why the current program %% is inefficient, suboptimal, failing to execute, and so on. %% -%% The status of the validation operation will be stored as part of the program object's -%% state. This value will be set to `?GL_TRUE' if the validation succeeded, and `?GL_FALSE' -%% otherwise. It can be queried by calling {@link gl:getProgramiv/2} with arguments `Program' -%% and `?GL_VALIDATE_STATUS'. If validation is successful, `Program' is guaranteed -%% to execute given the current state. Otherwise, `Program' is guaranteed to not execute. -%% -%% -%% This function is typically useful only during application development. The informational -%% string stored in the information log is completely implementation dependent; therefore, -%% an application should not expect different OpenGL implementations to produce identical -%% information strings. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glValidateProgram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glValidateProgram.xhtml">external</a> documentation. -spec validateProgram(Program) -> 'ok' when Program :: integer(). validateProgram(Program) -> cast(5495, <<Program:?GLuint>>). @@ -11833,72 +4927,7 @@ validateProgram(Program) -> %% The ``gl:vertexAttrib'' family of entry points allows an application to pass generic %% vertex attributes in numbered locations. %% -%% Generic attributes are defined as four-component values that are organized into an array. -%% The first entry of this array is numbered 0, and the size of the array is specified by -%% the implementation-dependent constant `?GL_MAX_VERTEX_ATTRIBS'. Individual elements -%% of this array can be modified with a ``gl:vertexAttrib'' call that specifies the index -%% of the element to be modified and a value for that element. -%% -%% These commands can be used to specify one, two, three, or all four components of the generic -%% vertex attribute specified by `Index' . A `1' in the name of the command indicates -%% that only one value is passed, and it will be used to modify the first component of the -%% generic vertex attribute. The second and third components will be set to 0, and the fourth -%% component will be set to 1. Similarly, a `2' in the name of the command indicates -%% that values are provided for the first two components, the third component will be set -%% to 0, and the fourth component will be set to 1. A `3' in the name of the command -%% indicates that values are provided for the first three components and the fourth component -%% will be set to 1, whereas a `4' in the name indicates that values are provided for -%% all four components. -%% -%% The letters `s', `f', `i', `d', `ub', `us', and `ui' -%% indicate whether the arguments are of type short, float, int, double, unsigned byte, unsigned -%% short, or unsigned int. When `v' is appended to the name, the commands can take a -%% pointer to an array of such values. -%% -%% Additional capitalized letters can indicate further alterations to the default behavior -%% of the glVertexAttrib function: -%% -%% The commands containing `N' indicate that the arguments will be passed as fixed-point -%% values that are scaled to a normalized range according to the component conversion rules -%% defined by the OpenGL specification. Signed values are understood to represent fixed-point -%% values in the range [-1,1], and unsigned values are understood to represent fixed-point -%% values in the range [0,1]. -%% -%% The commands containing `I' indicate that the arguments are extended to full signed -%% or unsigned integers. -%% -%% The commands containing `P' indicate that the arguments are stored as packed components -%% within a larger natural type. -%% -%% The commands containing `L' indicate that the arguments are full 64-bit quantities -%% and should be passed directly to shader inputs declared as 64-bit double precision types. -%% -%% -%% OpenGL Shading Language attribute variables are allowed to be of type mat2, mat3, or mat4. -%% Attributes of these types may be loaded using the ``gl:vertexAttrib'' entry points. -%% Matrices must be loaded into successive generic attribute slots in column major order, -%% with one column of the matrix in each generic attribute slot. -%% -%% A user-defined attribute variable declared in a vertex shader can be bound to a generic -%% attribute index by calling {@link gl:bindAttribLocation/3} . This allows an application -%% to use more descriptive variable names in a vertex shader. A subsequent change to the -%% specified generic vertex attribute will be immediately reflected as a change to the corresponding -%% attribute variable in the vertex shader. -%% -%% The binding between a generic vertex attribute index and a user-defined attribute variable -%% in a vertex shader is part of the state of a program object, but the current value of -%% the generic vertex attribute is not. The value of each generic vertex attribute is part -%% of current state, just like standard vertex attributes, and it is maintained even if a -%% different program object is used. -%% -%% An application may freely modify generic vertex attributes that are not bound to a named -%% vertex shader attribute variable. These values are simply maintained as part of current -%% state and will not be accessed by the vertex shader. If a generic vertex attribute bound -%% to an attribute variable in a vertex shader is not updated while the vertex shader is -%% executing, the vertex shader will repeatedly use the current value for the generic vertex -%% attribute. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttrib.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glVertexAttrib.xhtml">external</a> documentation. -spec vertexAttrib1d(Index, X) -> 'ok' when Index :: integer(),X :: float(). vertexAttrib1d(Index,X) -> cast(5496, <<Index:?GLuint,0:32,X:?GLdouble>>). @@ -12096,37 +5125,7 @@ vertexAttrib4usv(Index,{V1,V2,V3,V4}) -> %% and `Stride' specifies the byte stride from one attribute to the next, allowing vertices %% and attributes to be packed into a single array or stored in separate arrays. %% -%% For ``gl:vertexAttribPointer'', if `Normalized' is set to `?GL_TRUE', it -%% indicates that values stored in an integer format are to be mapped to the range [-1,1] -%% (for signed values) or [0,1] (for unsigned values) when they are accessed and converted -%% to floating point. Otherwise, values will be converted to floats directly without normalization. -%% -%% -%% For ``gl:vertexAttribIPointer'', only the integer types `?GL_BYTE', `?GL_UNSIGNED_BYTE' -%% , `?GL_SHORT', `?GL_UNSIGNED_SHORT', `?GL_INT', `?GL_UNSIGNED_INT' -%% are accepted. Values are always left as integer values. -%% -%% ``gl:vertexAttribLPointer'' specifies state for a generic vertex attribute array associated -%% with a shader attribute variable declared with 64-bit double precision components. `Type' -%% must be `?GL_DOUBLE'. `Index' , `Size' , and `Stride' behave as described -%% for ``gl:vertexAttribPointer'' and ``gl:vertexAttribIPointer''. -%% -%% If `Pointer' is not NULL, a non-zero named buffer object must be bound to the `?GL_ARRAY_BUFFER' -%% target (see {@link gl:bindBuffer/2} ), otherwise an error is generated. `Pointer' -%% is treated as a byte offset into the buffer object's data store. The buffer object binding -%% (`?GL_ARRAY_BUFFER_BINDING') is saved as generic vertex attribute array state (`?GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING' -%% ) for index `Index' . -%% -%% When a generic vertex attribute array is specified, `Size' , `Type' , `Normalized' -%% , `Stride' , and `Pointer' are saved as vertex array state, in addition to the -%% current vertex array buffer object binding. -%% -%% To enable and disable a generic vertex attribute array, call {@link gl:disableVertexAttribArray/1} -%% and {@link gl:disableVertexAttribArray/1} with `Index' . If enabled, the generic vertex -%% attribute array is used when {@link gl:drawArrays/3} , {@link gl:multiDrawArrays/3} , {@link gl:drawElements/4} -%% , see `glMultiDrawElements', or {@link gl:drawRangeElements/6} is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml">external</a> documentation. -spec vertexAttribPointer(Index, Size, Type, Normalized, Stride, Pointer) -> 'ok' when Index :: integer(),Size :: integer(),Type :: enum(),Normalized :: 0|1,Stride :: integer(),Pointer :: offset()|mem(). vertexAttribPointer(Index,Size,Type,Normalized,Stride,Pointer) when is_integer(Pointer) -> cast(5519, <<Index:?GLuint,Size:?GLint,Type:?GLenum,Normalized:?GLboolean,0:24,Stride:?GLsizei,Pointer:?GLuint>>); @@ -12184,7 +5183,7 @@ uniformMatrix4x3fv(Location,Transpose,Value) -> %% @doc glColorMaski %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glColorMaski.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec colorMaski(Index, R, G, B, A) -> 'ok' when Index :: integer(),R :: 0|1,G :: 0|1,B :: 0|1,A :: 0|1. colorMaski(Index,R,G,B,A) -> cast(5527, <<Index:?GLuint,R:?GLboolean,G:?GLboolean,B:?GLboolean,A:?GLboolean>>). @@ -12209,14 +5208,14 @@ enablei(Target,Index) -> %% @doc glEnablei %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glEnablei.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec disablei(Target, Index) -> 'ok' when Target :: enum(),Index :: integer(). disablei(Target,Index) -> cast(5531, <<Target:?GLenum,Index:?GLuint>>). %% @doc glIsEnabledi %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsEnabledi.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec isEnabledi(Target, Index) -> 0|1 when Target :: enum(),Index :: integer(). isEnabledi(Target,Index) -> call(5532, <<Target:?GLenum,Index:?GLuint>>). @@ -12228,23 +5227,7 @@ isEnabledi(Target,Index) -> %% a call to ``gl:beginTransformFeedback'' until a subsequent call to {@link gl:beginTransformFeedback/1} %% . Transform feedback commands must be paired. %% -%% If no geometry shader is present, while transform feedback is active the `Mode' -%% parameter to {@link gl:drawArrays/3} must match those specified in the following table: <table> -%% <tbody><tr><td>` Transform Feedback ' `PrimitiveMode' </td><td>` Allowed Render Primitive ' -%% `Modes' </td></tr></tbody><tbody><tr><td>`?GL_POINTS'</td><td>`?GL_POINTS'</td> -%% </tr><tr><td>`?GL_LINES'</td><td>`?GL_LINES', `?GL_LINE_LOOP', `?GL_LINE_STRIP' -%% , `?GL_LINES_ADJACENCY', `?GL_LINE_STRIP_ADJACENCY'</td></tr><tr><td>`?GL_TRIANGLES' -%% </td><td>`?GL_TRIANGLES', `?GL_TRIANGLE_STRIP', `?GL_TRIANGLE_FAN', `?GL_TRIANGLES_ADJACENCY' -%% , `?GL_TRIANGLE_STRIP_ADJACENCY'</td></tr></tbody></table> -%% -%% If a geometry shader is present, the output primitive type from the geometry shader must -%% match those provided in the following table: <table><tbody><tr><td>` Transform Feedback ' -%% `PrimitiveMode' </td><td>` Allowed Geometry Shader Output Primitive Type '</td></tr> -%% </tbody><tbody><tr><td>`?GL_POINTS'</td><td>`?points'</td></tr><tr><td>`?GL_LINES' -%% </td><td>`?line_strip'</td></tr><tr><td>`?GL_TRIANGLES'</td><td>`?triangle_strip' -%% </td></tr></tbody></table> -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBeginTransformFeedback.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBeginTransformFeedback.xhtml">external</a> documentation. -spec beginTransformFeedback(PrimitiveMode) -> 'ok' when PrimitiveMode :: enum(). beginTransformFeedback(PrimitiveMode) -> cast(5533, <<PrimitiveMode:?GLenum>>). @@ -12265,11 +5248,7 @@ endTransformFeedback() -> %% a range of `Buffer' to the indexed buffer binding target, ``gl:bindBufferBase'' %% also binds the range to the generic buffer binding point specified by `Target' . %% -%% `Offset' specifies the offset in basic machine units into the buffer object `Buffer' -%% and `Size' specifies the amount of data that can be read from the buffer object -%% while used as an indexed target. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindBufferRange.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindBufferRange.xhtml">external</a> documentation. -spec bindBufferRange(Target, Index, Buffer, Offset, Size) -> 'ok' when Target :: enum(),Index :: integer(),Buffer :: integer(),Offset :: integer(),Size :: integer(). bindBufferRange(Target,Index,Buffer,Offset,Size) -> cast(5535, <<Target:?GLenum,Index:?GLuint,Buffer:?GLuint,0:32,Offset:?GLintptr,Size:?GLsizeiptr>>). @@ -12284,7 +5263,7 @@ bindBufferRange(Target,Index,Buffer,Offset,Size) -> %% binding target, ``gl:bindBufferBase'' also binds `Buffer' to the generic buffer %% binding point specified by `Target' . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindBufferBase.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindBufferBase.xhtml">external</a> documentation. -spec bindBufferBase(Target, Index, Buffer) -> 'ok' when Target :: enum(),Index :: integer(),Buffer :: integer(). bindBufferBase(Target,Index,Buffer) -> cast(5536, <<Target:?GLenum,Index:?GLuint,Buffer:?GLuint>>). @@ -12297,32 +5276,7 @@ bindBufferBase(Target,Index,Buffer) -> %% from the emitted vertices. Otherwise, the values of the selected vertex shader outputs %% are recorded. %% -%% The state set by ``gl:tranformFeedbackVaryings'' is stored and takes effect next time {@link gl:linkProgram/1} -%% is called on `Program' . When {@link gl:linkProgram/1} is called, `Program' is -%% linked so that the values of the specified varying variables for the vertices of each -%% primitive generated by the GL are written to a single buffer object if `BufferMode' -%% is `?GL_INTERLEAVED_ATTRIBS' or multiple buffer objects if `BufferMode' is `?GL_SEPARATE_ATTRIBS' -%% . -%% -%% In addition to the errors generated by ``gl:transformFeedbackVaryings'', the program `Program' -%% will fail to link if: -%% -%% The count specified by ``gl:transformFeedbackVaryings'' is non-zero, but the program -%% object has no vertex or geometry shader. -%% -%% Any variable name specified in the `Varyings' array is not declared as an output -%% in the vertex shader (or the geometry shader, if active). -%% -%% Any two entries in the `Varyings' array specify the same varying variable. -%% -%% The total number of components to capture in any varying variable in `Varyings' -%% is greater than the constant `?GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS' and -%% the buffer mode is `?GL_SEPARATE_ATTRIBS'. -%% -%% The total number of components to capture is greater than the constant `?GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS' -%% and the buffer mode is `?GL_INTERLEAVED_ATTRIBS'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTransformFeedbackVaryings.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTransformFeedbackVaryings.xhtml">external</a> documentation. -spec transformFeedbackVaryings(Program, Varyings, BufferMode) -> 'ok' when Program :: integer(),Varyings :: iolist(),BufferMode :: enum(). transformFeedbackVaryings(Program,Varyings,BufferMode) -> VaryingsTemp = list_to_binary([[Str|[0]] || Str <- Varyings ]), @@ -12338,26 +5292,7 @@ transformFeedbackVaryings(Program,Varyings,BufferMode) -> %% the `Varyings' array passed to {@link gl:transformFeedbackVaryings/3} , and an `Index' %% of `?GL_TRANSFORM_FEEDBACK_VARYINGS-1' selects the last such variable. %% -%% The name of the selected varying is returned as a null-terminated string in `Name' . -%% The actual number of characters written into `Name' , excluding the null terminator, -%% is returned in `Length' . If `Length' is NULL, no length is returned. The maximum -%% number of characters that may be written into `Name' , including the null terminator, -%% is specified by `BufSize' . -%% -%% The length of the longest varying name in program is given by `?GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH' -%% , which can be queried with {@link gl:getProgramiv/2} . -%% -%% For the selected varying variable, its type is returned into `Type' . The size of -%% the varying is returned into `Size' . The value in `Size' is in units of the -%% type returned in `Type' . The type returned can be any of the scalar, vector, or matrix -%% attribute types returned by {@link gl:getActiveAttrib/3} . If an error occurred, the return -%% parameters `Length' , `Size' , `Type' and `Name' will be unmodified. -%% This command will return as much information about the varying variables as possible. -%% If no information is available, `Length' will be set to zero and `Name' will -%% be an empty string. This situation could arise if ``gl:getTransformFeedbackVarying'' -%% is called after a failed link. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetTransformFeedbackVarying.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetTransformFeedbackVarying.xhtml">external</a> documentation. -spec getTransformFeedbackVarying(Program, Index, BufSize) -> {Size :: integer(),Type :: enum(),Name :: string()} when Program :: integer(),Index :: integer(),BufSize :: integer(). getTransformFeedbackVarying(Program,Index,BufSize) -> call(5538, <<Program:?GLuint,Index:?GLuint,BufSize:?GLsizei>>). @@ -12372,7 +5307,7 @@ getTransformFeedbackVarying(Program,Index,BufSize) -> %% is disabled. If `Clamp' is `?GL_FIXED_ONLY', read color clamping is enabled %% only if the selected read buffer has fixed point components and disabled otherwise. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClampColor.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glClampColor.xhtml">external</a> documentation. -spec clampColor(Target, Clamp) -> 'ok' when Target :: enum(),Clamp :: enum(). clampColor(Target,Clamp) -> cast(5539, <<Target:?GLenum,Clamp:?GLenum>>). @@ -12393,18 +5328,7 @@ clampColor(Target,Clamp) -> %% is `?GL_QUERY_NO_WAIT', the GL may choose to unconditionally execute the subsequent %% rendering commands without waiting for the query to complete. %% -%% If `Mode' is `?GL_QUERY_BY_REGION_WAIT', the GL will also wait for occlusion -%% query results and discard rendering commands if the result of the occlusion query is zero. -%% If the query result is non-zero, subsequent rendering commands are executed, but the GL -%% may discard the results of the commands for any region of the framebuffer that did not -%% contribute to the sample count in the specified occlusion query. Any such discarding is -%% done in an implementation-dependent manner, but the rendering command results may not -%% be discarded for any samples that contributed to the occlusion query sample count. If `Mode' -%% is `?GL_QUERY_BY_REGION_NO_WAIT', the GL operates as in `?GL_QUERY_BY_REGION_WAIT' -%% , but may choose to unconditionally execute the subsequent rendering commands without -%% waiting for the query to complete. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBeginConditionalRender.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBeginConditionalRender.xhtml">external</a> documentation. -spec beginConditionalRender(Id, Mode) -> 'ok' when Id :: integer(),Mode :: enum(). beginConditionalRender(Id,Mode) -> cast(5540, <<Id:?GLuint,Mode:?GLenum>>). @@ -12417,7 +5341,7 @@ endConditionalRender() -> %% @doc glVertexAttribIPointer %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribIPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec vertexAttribIPointer(Index, Size, Type, Stride, Pointer) -> 'ok' when Index :: integer(),Size :: integer(),Type :: enum(),Stride :: integer(),Pointer :: offset()|mem(). vertexAttribIPointer(Index,Size,Type,Stride,Pointer) when is_integer(Pointer) -> cast(5542, <<Index:?GLuint,Size:?GLint,Type:?GLenum,Stride:?GLsizei,Pointer:?GLuint>>); @@ -12433,7 +5357,7 @@ getVertexAttribIiv(Index,Pname) -> %% @doc glGetVertexAttribI %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetVertexAttribI.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getVertexAttribIuiv(Index, Pname) -> {integer(),integer(),integer(),integer()} when Index :: integer(),Pname :: enum(). getVertexAttribIuiv(Index,Pname) -> call(5545, <<Index:?GLuint,Pname:?GLenum>>). @@ -12556,21 +5480,7 @@ getUniformuiv(Program,Location) -> %% . `Name' must be a null-terminated string. `ColorNumber' must be less than `?GL_MAX_DRAW_BUFFERS' %% . %% -%% The bindings specified by ``gl:bindFragDataLocation'' have no effect until `Program' -%% is next linked. Bindings may be specified at any time after `Program' has been created. -%% Specifically, they may be specified before shader objects are attached to the program. -%% Therefore, any name may be specified in `Name' , including a name that is never used -%% as a varying out variable in any fragment shader object. Names beginning with `?gl_' -%% are reserved by the GL. -%% -%% In addition to the errors generated by ``gl:bindFragDataLocation'', the program `Program' -%% will fail to link if: -%% -%% The number of active outputs is greater than the value `?GL_MAX_DRAW_BUFFERS'. -%% -%% More than one varying out variable is bound to the same color number. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindFragDataLocation.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindFragDataLocation.xhtml">external</a> documentation. -spec bindFragDataLocation(Program, Color, Name) -> 'ok' when Program :: integer(),Color :: integer(),Name :: string(). bindFragDataLocation(Program,Color,Name) -> NameLen = length(Name), @@ -12584,7 +5494,7 @@ bindFragDataLocation(Program,Color,Name) -> %% not the name of an active user-defined varying out fragment shader variable within `Program' %% , -1 will be returned. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetFragDataLocation.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetFragDataLocation.xhtml">external</a> documentation. -spec getFragDataLocation(Program, Name) -> integer() when Program :: integer(),Name :: string(). getFragDataLocation(Program,Name) -> NameLen = length(Name), @@ -12655,7 +5565,7 @@ texParameterIiv(Target,Pname,Params) -> %% @doc glTexParameterI %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexParameterI.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec texParameterIuiv(Target, Pname, Params) -> 'ok' when Target :: enum(),Pname :: enum(),Params :: tuple(). texParameterIuiv(Target,Pname,Params) -> cast(5570, <<Target:?GLenum,Pname:?GLenum,(size(Params)):?GLuint, @@ -12669,7 +5579,7 @@ getTexParameterIiv(Target,Pname) -> %% @doc glGetTexParameterI %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetTexParameterI.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getTexParameterIuiv(Target, Pname) -> {integer(),integer(),integer(),integer()} when Target :: enum(),Pname :: enum(). getTexParameterIuiv(Target,Pname) -> call(5572, <<Target:?GLenum,Pname:?GLenum>>). @@ -12685,24 +5595,7 @@ getTexParameterIuiv(Target,Pname) -> %% and conversion for fixed-point color buffers are performed in the same fashion as {@link gl:clearColor/4} %% . %% -%% If `Buffer' is `?GL_DEPTH', `DrawBuffer' must be zero, and `Value' -%% points to a single value to clear the depth buffer to. Only ``gl:clearBufferfv'' should -%% be used to clear depth buffers. Clamping and conversion for fixed-point depth buffers -%% are performed in the same fashion as {@link gl:clearDepth/1} . -%% -%% If `Buffer' is `?GL_STENCIL', `DrawBuffer' must be zero, and `Value' -%% points to a single value to clear the stencil buffer to. Only ``gl:clearBufferiv'' should -%% be used to clear stencil buffers. Masing and type conversion are performed in the same -%% fashion as {@link gl:clearStencil/1} . -%% -%% ``gl:clearBufferfi'' may be used to clear the depth and stencil buffers. `Buffer' -%% must be `?GL_DEPTH_STENCIL' and `DrawBuffer' must be zero. `Depth' and `Stencil' -%% are the depth and stencil values, respectively. -%% -%% The result of ``gl:clearBuffer'' is undefined if no conversion between the type of `Value' -%% and the buffer being cleared is defined. However, this is not an error. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClearBuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glClearBuffer.xhtml">external</a> documentation. -spec clearBufferiv(Buffer, Drawbuffer, Value) -> 'ok' when Buffer :: enum(),Drawbuffer :: integer(),Value :: tuple(). clearBufferiv(Buffer,Drawbuffer,Value) -> cast(5573, <<Buffer:?GLenum,Drawbuffer:?GLint,(size(Value)):?GLuint, @@ -12724,7 +5617,7 @@ clearBufferfv(Buffer,Drawbuffer,Value) -> %% @doc glClearBufferfi %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClearBufferfi.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec clearBufferfi(Buffer, Drawbuffer, Depth, Stencil) -> 'ok' when Buffer :: enum(),Drawbuffer :: integer(),Depth :: float(),Stencil :: integer(). clearBufferfi(Buffer,Drawbuffer,Depth,Stencil) -> cast(5576, <<Buffer:?GLenum,Drawbuffer:?GLint,Depth:?GLfloat,Stencil:?GLint>>). @@ -12737,14 +5630,14 @@ getStringi(Name,Index) -> %% @doc glDrawArraysInstance %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawArraysInstance.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec drawArraysInstanced(Mode, First, Count, Primcount) -> 'ok' when Mode :: enum(),First :: integer(),Count :: integer(),Primcount :: integer(). drawArraysInstanced(Mode,First,Count,Primcount) -> cast(5578, <<Mode:?GLenum,First:?GLint,Count:?GLsizei,Primcount:?GLsizei>>). %% @doc glDrawElementsInstance %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawElementsInstance.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec drawElementsInstanced(Mode, Count, Type, Indices, Primcount) -> 'ok' when Mode :: enum(),Count :: integer(),Type :: enum(),Indices :: offset()|mem(),Primcount :: integer(). drawElementsInstanced(Mode,Count,Type,Indices,Primcount) when is_integer(Indices) -> cast(5579, <<Mode:?GLenum,Count:?GLsizei,Type:?GLenum,Indices:?GLuint,Primcount:?GLsizei>>); @@ -12760,62 +5653,9 @@ drawElementsInstanced(Mode,Count,Type,Indices,Primcount) -> %% buffer texture is detached and no new buffer object is attached. If `Buffer' is non-zero, %% it must be the name of an existing buffer object. `Target' must be `?GL_TEXTURE_BUFFER' %% . `Internalformat' specifies the storage format, and must be one of the following -%% sized internal formats: <table><tbody><tr><td></td><td></td><td></td><td></td><td>` Component ' -%% </td></tr></tbody><tbody><tr><td>`Sized Internal Format'</td><td>`Base Type'</td> -%% <td>`Components'</td><td>`Norm'</td><td>0</td><td>1</td><td>2</td><td>3</td></tr> -%% <tr><td>`?GL_R8'</td><td>ubyte</td><td>1</td><td>YES</td><td>R</td><td>0</td><td>0</td> -%% <td>1</td></tr><tr><td>`?GL_R16'</td><td>ushort</td><td>1</td><td>YES</td><td>R</td><td> -%% 0</td><td>0</td><td>1</td></tr><tr><td>`?GL_R16F'</td><td>half</td><td>1</td><td>NO</td> -%% <td>R</td><td>0</td><td>0</td><td>1</td></tr><tr><td>`?GL_R32F'</td><td>float</td><td> -%% 1</td><td>NO</td><td>R</td><td>0</td><td>0</td><td>1</td></tr><tr><td>`?GL_R8I'</td><td> -%% byte</td><td>1</td><td>NO</td><td>R</td><td>0</td><td>0</td><td>1</td></tr><tr><td>`?GL_R16I' -%% </td><td>short</td><td>1</td><td>NO</td><td>R</td><td>0</td><td>0</td><td>1</td></tr><tr><td> -%% `?GL_R32I'</td><td>int</td><td>1</td><td>NO</td><td>R</td><td>0</td><td>0</td><td>1</td> -%% </tr><tr><td>`?GL_R8UI'</td><td>ubyte</td><td>1</td><td>NO</td><td>R</td><td>0</td><td> -%% 0</td><td>1</td></tr><tr><td>`?GL_R16UI'</td><td>ushort</td><td>1</td><td>NO</td><td> -%% R</td><td>0</td><td>0</td><td>1</td></tr><tr><td>`?GL_R32UI'</td><td>uint</td><td>1</td> -%% <td>NO</td><td>R</td><td>0</td><td>0</td><td>1</td></tr><tr><td>`?GL_RG8'</td><td>ubyte -%% </td><td>2</td><td>YES</td><td>R</td><td>G</td><td>0</td><td>1</td></tr><tr><td>`?GL_RG16' -%% </td><td>ushort</td><td>2</td><td>YES</td><td>R</td><td>G</td><td>0</td><td>1</td></tr><tr> -%% <td>`?GL_RG16F'</td><td>half</td><td>2</td><td>NO</td><td>R</td><td>G</td><td>0</td><td> -%% 1</td></tr><tr><td>`?GL_RG32F'</td><td>float</td><td>2</td><td>NO</td><td>R</td><td>G -%% </td><td>0</td><td>1</td></tr><tr><td>`?GL_RG8I'</td><td>byte</td><td>2</td><td>NO</td> -%% <td>R</td><td>G</td><td>0</td><td>1</td></tr><tr><td>`?GL_RG16I'</td><td>short</td><td> -%% 2</td><td>NO</td><td>R</td><td>G</td><td>0</td><td>1</td></tr><tr><td>`?GL_RG32I'</td> -%% <td>int</td><td>2</td><td>NO</td><td>R</td><td>G</td><td>0</td><td>1</td></tr><tr><td>`?GL_RG8UI' -%% </td><td>ubyte</td><td>2</td><td>NO</td><td>R</td><td>G</td><td>0</td><td>1</td></tr><tr><td> -%% `?GL_RG16UI'</td><td>ushort</td><td>2</td><td>NO</td><td>R</td><td>G</td><td>0</td><td> -%% 1</td></tr><tr><td>`?GL_RG32UI'</td><td>uint</td><td>2</td><td>NO</td><td>R</td><td>G -%% </td><td>0</td><td>1</td></tr><tr><td>`?GL_RGB32F'</td><td>float</td><td>3</td><td>NO -%% </td><td>R</td><td>G</td><td>B</td><td>1</td></tr><tr><td>`?GL_RGB32I'</td><td>int</td> -%% <td>3</td><td>NO</td><td>R</td><td>G</td><td>B</td><td>1</td></tr><tr><td>`?GL_RGB32UI' -%% </td><td>uint</td><td>3</td><td>NO</td><td>R</td><td>G</td><td>B</td><td>1</td></tr><tr><td> -%% `?GL_RGBA8'</td><td>uint</td><td>4</td><td>YES</td><td>R</td><td>G</td><td>B</td><td> -%% A</td></tr><tr><td>`?GL_RGBA16'</td><td>short</td><td>4</td><td>YES</td><td>R</td><td> -%% G</td><td>B</td><td>A</td></tr><tr><td>`?GL_RGBA16F'</td><td>half</td><td>4</td><td>NO -%% </td><td>R</td><td>G</td><td>B</td><td>A</td></tr><tr><td>`?GL_RGBA32F'</td><td>float -%% </td><td>4</td><td>NO</td><td>R</td><td>G</td><td>B</td><td>A</td></tr><tr><td>`?GL_RGBA8I' -%% </td><td>byte</td><td>4</td><td>NO</td><td>R</td><td>G</td><td>B</td><td>A</td></tr><tr><td> -%% `?GL_RGBA16I'</td><td>short</td><td>4</td><td>NO</td><td>R</td><td>G</td><td>B</td><td> -%% A</td></tr><tr><td>`?GL_RGBA32I'</td><td>int</td><td>4</td><td>NO</td><td>R</td><td>G -%% </td><td>B</td><td>A</td></tr><tr><td>`?GL_RGBA8UI'</td><td>ubyte</td><td>4</td><td>NO -%% </td><td>R</td><td>G</td><td>B</td><td>A</td></tr><tr><td>`?GL_RGBA16UI'</td><td>ushort -%% </td><td>4</td><td>NO</td><td>R</td><td>G</td><td>B</td><td>A</td></tr><tr><td>`?GL_RGBA32UI' -%% </td><td>uint</td><td>4</td><td>NO</td><td>R</td><td>G</td><td>B</td><td>A</td></tr></tbody> -%% </table> -%% -%% When a buffer object is attached to a buffer texture, the buffer object's data store -%% is taken as the texture's texel array. The number of texels in the buffer texture's texel -%% array is given by buffer_size components×sizeof( base_type/) -%% -%% where `buffer_size' is the size of the buffer object, in basic machine units and -%% components and base type are the element count and base data type for elements, as specified -%% in the table above. The number of texels in the texel array is then clamped to the implementation-dependent -%% limit `?GL_MAX_TEXTURE_BUFFER_SIZE'. When a buffer texture is accessed in a shader, -%% the results of a texel fetch are undefined if the specified texel coordinate is negative, -%% or greater than or equal to the clamped number of texels in the texel array. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexBuffer.xml">external</a> documentation. +%% sized internal formats: +%% +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexBuffer.xhtml">external</a> documentation. -spec texBuffer(Target, Internalformat, Buffer) -> 'ok' when Target :: enum(),Internalformat :: enum(),Buffer :: integer(). texBuffer(Target,Internalformat,Buffer) -> cast(5581, <<Target:?GLenum,Internalformat:?GLenum,Buffer:?GLuint>>). @@ -12825,19 +5665,7 @@ texBuffer(Target,Internalformat,Buffer) -> %% ``gl:primitiveRestartIndex'' specifies a vertex array element that is treated specially %% when primitive restarting is enabled. This is known as the primitive restart index. %% -%% When one of the `Draw*' commands transfers a set of generic attribute array elements -%% to the GL, if the index within the vertex arrays corresponding to that set is equal to -%% the primitive restart index, then the GL does not process those elements as a vertex. -%% Instead, it is as if the drawing command ended with the immediately preceding transfer, -%% and another drawing command is immediately started with the same parameters, but only -%% transferring the immediately following element through the end of the originally specified -%% elements. -%% -%% When either {@link gl:drawElementsBaseVertex/5} , {@link gl:drawElementsInstancedBaseVertex/6} -%% or see `glMultiDrawElementsBaseVertex' is used, the primitive restart comparison -%% occurs before the basevertex offset is added to the array index. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPrimitiveRestartIndex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPrimitiveRestartIndex.xhtml">external</a> documentation. -spec primitiveRestartIndex(Index) -> 'ok' when Index :: integer(). primitiveRestartIndex(Index) -> cast(5582, <<Index:?GLuint>>). @@ -12850,7 +5678,7 @@ getInteger64i_v(Target,Index) -> %% @doc glGetBufferParameteri64v %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetBufferParameteri64v.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getBufferParameteri64v(Target, Pname) -> [integer()] when Target :: enum(),Pname :: enum(). getBufferParameteri64v(Target,Pname) -> call(5584, <<Target:?GLenum,Pname:?GLenum>>). @@ -12863,51 +5691,7 @@ getBufferParameteri64v(Target,Pname) -> %% `Target' must be `?GL_DRAW_FRAMEBUFFER', `?GL_READ_FRAMEBUFFER', or `?GL_FRAMEBUFFER' %% . `?GL_FRAMEBUFFER' is equivalent to `?GL_DRAW_FRAMEBUFFER'. %% -%% `Attachment' specifies the logical attachment of the framebuffer and must be `?GL_COLOR_ATTACHMENT' -%% `i', `?GL_DEPTH_ATTACHMENT', `?GL_STENCIL_ATTACHMENT' or `?GL_DEPTH_STENCIL_ATTACHMMENT' -%% . `i' in `?GL_COLOR_ATTACHMENT'`i' may range from zero to the value of `?GL_MAX_COLOR_ATTACHMENTS' -%% - 1. Attaching a level of a texture to `?GL_DEPTH_STENCIL_ATTACHMENT' is equivalent -%% to attaching that level to both the `?GL_DEPTH_ATTACHMENT'`and' the `?GL_STENCIL_ATTACHMENT' -%% attachment points simultaneously. -%% -%% `Textarget' specifies what type of texture is named by `Texture' , and for cube -%% map textures, specifies the face that is to be attached. If `Texture' is not zero, -%% it must be the name of an existing texture with type `Textarget' , unless it is a -%% cube map texture, in which case `Textarget' must be `?GL_TEXTURE_CUBE_MAP_POSITIVE_X' -%% `?GL_TEXTURE_CUBE_MAP_NEGATIVE_X', `?GL_TEXTURE_CUBE_MAP_POSITIVE_Y', `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Y' -%% , `?GL_TEXTURE_CUBE_MAP_POSITIVE_Z', or `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z'. -%% -%% If `Texture' is non-zero, the specified `Level' of the texture object named `Texture' -%% is attached to the framebfufer attachment point named by `Attachment' . For ``gl:framebufferTexture1D'' -%% , ``gl:framebufferTexture2D'', and ``gl:framebufferTexture3D'', `Texture' must -%% be zero or the name of an existing texture with a target of `Textarget' , or `Texture' -%% must be the name of an existing cube-map texture and `Textarget' must be one of `?GL_TEXTURE_CUBE_MAP_POSITIVE_X' -%% , `?GL_TEXTURE_CUBE_MAP_POSITIVE_Y', `?GL_TEXTURE_CUBE_MAP_POSITIVE_Z', `?GL_TEXTURE_CUBE_MAP_NEGATIVE_X' -%% , `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Y', or `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z'. -%% -%% If `Textarget' is `?GL_TEXTURE_RECTANGLE', `?GL_TEXTURE_2D_MULTISAMPLE', -%% or `?GL_TEXTURE_2D_MULTISAMPLE_ARRAY', then `Level' must be zero. If `Textarget' -%% is `?GL_TEXTURE_3D', then level must be greater than or equal to zero and less than -%% or equal to log2 of the value of `?GL_MAX_3D_TEXTURE_SIZE'. If `Textarget' is -%% one of `?GL_TEXTURE_CUBE_MAP_POSITIVE_X', `?GL_TEXTURE_CUBE_MAP_POSITIVE_Y', `?GL_TEXTURE_CUBE_MAP_POSITIVE_Z' -%% , `?GL_TEXTURE_CUBE_MAP_NEGATIVE_X', `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Y', or `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z' -%% , then `Level' must be greater than or equal to zero and less than or equal to log2 -%% of the value of `?GL_MAX_CUBE_MAP_TEXTURE_SIZE'. For all other values of `Textarget' -%% , `Level' must be greater than or equal to zero and no larger than log2 of the value -%% of `?GL_MAX_TEXTURE_SIZE'. -%% -%% `Layer' specifies the layer of a 2-dimensional image within a 3-dimensional texture. -%% -%% -%% For ``gl:framebufferTexture1D'', if `Texture' is not zero, then `Textarget' -%% must be `?GL_TEXTURE_1D'. For ``gl:framebufferTexture2D'', if `Texture' is -%% not zero, `Textarget' must be one of `?GL_TEXTURE_2D', `?GL_TEXTURE_RECTANGLE' -%% , `?GL_TEXTURE_CUBE_MAP_POSITIVE_X', `?GL_TEXTURE_CUBE_MAP_POSITIVE_Y', `?GL_TEXTURE_CUBE_MAP_POSITIVE_Z' -%% , `?GL_TEXTURE_CUBE_MAP_NEGATIVE_X', `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Y', `?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z' -%% , or `?GL_TEXTURE_2D_MULTISAMPLE'. For ``gl:framebufferTexture3D'', if `Texture' -%% is not zero, then `Textarget' must be `?GL_TEXTURE_3D'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFramebufferTexture.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glFramebufferTexture.xhtml">external</a> documentation. -spec framebufferTexture(Target, Attachment, Texture, Level) -> 'ok' when Target :: enum(),Attachment :: enum(),Texture :: integer(),Level :: integer(). framebufferTexture(Target,Attachment,Texture,Level) -> cast(5585, <<Target:?GLenum,Attachment:?GLenum,Texture:?GLuint,Level:?GLint>>). @@ -12921,9 +5705,7 @@ framebufferTexture(Target,Attachment,Texture,Level) -> %% vertices being rendered. An attribute is referred to as instanced if its `?GL_VERTEX_ATTRIB_ARRAY_DIVISOR' %% value is non-zero. %% -%% `Index' must be less than the value of `?GL_MAX_VERTEX_ATTRIBUTES'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribDivisor.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glVertexAttribDivisor.xhtml">external</a> documentation. -spec vertexAttribDivisor(Index, Divisor) -> 'ok' when Index :: integer(),Divisor :: integer(). vertexAttribDivisor(Index,Divisor) -> cast(5586, <<Index:?GLuint,Divisor:?GLuint>>). @@ -12938,13 +5720,7 @@ vertexAttribDivisor(Index,Divisor) -> %% is the value of `?GL_SAMPLES' for the current framebuffer. At least 1 sample for %% each covered fragment is generated. %% -%% A `Value' of 1.0 indicates that each sample in the framebuffer should be indpendently -%% shaded. A `Value' of 0.0 effectively allows the GL to ignore sample rate shading. -%% Any value between 0.0 and 1.0 allows the GL to shade only a subset of the total samples -%% within each covered fragment. Which samples are shaded and the algorithm used to select -%% that subset of the fragment's samples is implementation dependent. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMinSampleShading.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glMinSampleShading.xhtml">external</a> documentation. -spec minSampleShading(Value) -> 'ok' when Value :: clamp(). minSampleShading(Value) -> cast(5587, <<Value:?GLclampf>>). @@ -12963,7 +5739,7 @@ blendEquationSeparatei(Buf,ModeRGB,ModeAlpha) -> %% @doc glBlendFunci %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunci.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec blendFunci(Buf, Src, Dst) -> 'ok' when Buf :: integer(),Src :: enum(),Dst :: enum(). blendFunci(Buf,Src,Dst) -> cast(5590, <<Buf:?GLuint,Src:?GLenum,Dst:?GLenum>>). @@ -12976,7 +5752,7 @@ blendFuncSeparatei(Buf,SrcRGB,DstRGB,SrcAlpha,DstAlpha) -> %% @doc glLoadTransposeMatrixARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLoadTransposeMatrixARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec loadTransposeMatrixfARB(M) -> 'ok' when M :: matrix(). loadTransposeMatrixfARB({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16}) -> cast(5592, <<M1:?GLfloat,M2:?GLfloat,M3:?GLfloat,M4:?GLfloat,M5:?GLfloat,M6:?GLfloat,M7:?GLfloat,M8:?GLfloat,M9:?GLfloat,M10:?GLfloat,M11:?GLfloat,M12:?GLfloat,M13:?GLfloat,M14:?GLfloat,M15:?GLfloat,M16:?GLfloat>>); @@ -12985,7 +5761,7 @@ loadTransposeMatrixfARB({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}) -> %% @doc glLoadTransposeMatrixARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLoadTransposeMatrixARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec loadTransposeMatrixdARB(M) -> 'ok' when M :: matrix(). loadTransposeMatrixdARB({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16}) -> cast(5593, <<M1:?GLdouble,M2:?GLdouble,M3:?GLdouble,M4:?GLdouble,M5:?GLdouble,M6:?GLdouble,M7:?GLdouble,M8:?GLdouble,M9:?GLdouble,M10:?GLdouble,M11:?GLdouble,M12:?GLdouble,M13:?GLdouble,M14:?GLdouble,M15:?GLdouble,M16:?GLdouble>>); @@ -12994,7 +5770,7 @@ loadTransposeMatrixdARB({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}) -> %% @doc glMultTransposeMatrixARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMultTransposeMatrixARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec multTransposeMatrixfARB(M) -> 'ok' when M :: matrix(). multTransposeMatrixfARB({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16}) -> cast(5594, <<M1:?GLfloat,M2:?GLfloat,M3:?GLfloat,M4:?GLfloat,M5:?GLfloat,M6:?GLfloat,M7:?GLfloat,M8:?GLfloat,M9:?GLfloat,M10:?GLfloat,M11:?GLfloat,M12:?GLfloat,M13:?GLfloat,M14:?GLfloat,M15:?GLfloat,M16:?GLfloat>>); @@ -13003,7 +5779,7 @@ multTransposeMatrixfARB({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}) -> %% @doc glMultTransposeMatrixARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMultTransposeMatrixARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec multTransposeMatrixdARB(M) -> 'ok' when M :: matrix(). multTransposeMatrixdARB({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16}) -> cast(5595, <<M1:?GLdouble,M2:?GLdouble,M3:?GLdouble,M4:?GLdouble,M5:?GLdouble,M6:?GLdouble,M7:?GLdouble,M8:?GLdouble,M9:?GLdouble,M10:?GLdouble,M11:?GLdouble,M12:?GLdouble,M13:?GLdouble,M14:?GLdouble,M15:?GLdouble,M16:?GLdouble>>); @@ -13012,7 +5788,7 @@ multTransposeMatrixdARB({M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12}) -> %% @doc glWeightARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWeightARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec weightbvARB(Weights) -> 'ok' when Weights :: [integer()]. weightbvARB(Weights) -> WeightsLen = length(Weights), @@ -13021,7 +5797,7 @@ weightbvARB(Weights) -> %% @doc glWeightARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWeightARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec weightsvARB(Weights) -> 'ok' when Weights :: [integer()]. weightsvARB(Weights) -> WeightsLen = length(Weights), @@ -13030,7 +5806,7 @@ weightsvARB(Weights) -> %% @doc glWeightARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWeightARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec weightivARB(Weights) -> 'ok' when Weights :: [integer()]. weightivARB(Weights) -> WeightsLen = length(Weights), @@ -13039,7 +5815,7 @@ weightivARB(Weights) -> %% @doc glWeightARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWeightARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec weightfvARB(Weights) -> 'ok' when Weights :: [float()]. weightfvARB(Weights) -> WeightsLen = length(Weights), @@ -13048,7 +5824,7 @@ weightfvARB(Weights) -> %% @doc glWeightARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWeightARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec weightdvARB(Weights) -> 'ok' when Weights :: [float()]. weightdvARB(Weights) -> WeightsLen = length(Weights), @@ -13057,7 +5833,7 @@ weightdvARB(Weights) -> %% @doc glWeightARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWeightARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec weightubvARB(Weights) -> 'ok' when Weights :: [integer()]. weightubvARB(Weights) -> WeightsLen = length(Weights), @@ -13066,7 +5842,7 @@ weightubvARB(Weights) -> %% @doc glWeightARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWeightARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec weightusvARB(Weights) -> 'ok' when Weights :: [integer()]. weightusvARB(Weights) -> WeightsLen = length(Weights), @@ -13075,7 +5851,7 @@ weightusvARB(Weights) -> %% @doc glWeightARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWeightARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec weightuivARB(Weights) -> 'ok' when Weights :: [integer()]. weightuivARB(Weights) -> WeightsLen = length(Weights), @@ -13084,21 +5860,21 @@ weightuivARB(Weights) -> %% @doc glVertexBlenARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexBlenARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec vertexBlendARB(Count) -> 'ok' when Count :: integer(). vertexBlendARB(Count) -> cast(5604, <<Count:?GLint>>). %% @doc glCurrentPaletteMatrixARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCurrentPaletteMatrixARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec currentPaletteMatrixARB(Index) -> 'ok' when Index :: integer(). currentPaletteMatrixARB(Index) -> cast(5605, <<Index:?GLint>>). %% @doc glMatrixIndexARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMatrixIndexARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec matrixIndexubvARB(Indices) -> 'ok' when Indices :: [integer()]. matrixIndexubvARB(Indices) -> IndicesLen = length(Indices), @@ -13107,7 +5883,7 @@ matrixIndexubvARB(Indices) -> %% @doc glMatrixIndexARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMatrixIndexARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec matrixIndexusvARB(Indices) -> 'ok' when Indices :: [integer()]. matrixIndexusvARB(Indices) -> IndicesLen = length(Indices), @@ -13116,7 +5892,7 @@ matrixIndexusvARB(Indices) -> %% @doc glMatrixIndexARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMatrixIndexARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec matrixIndexuivARB(Indices) -> 'ok' when Indices :: [integer()]. matrixIndexuivARB(Indices) -> IndicesLen = length(Indices), @@ -13125,7 +5901,7 @@ matrixIndexuivARB(Indices) -> %% @doc glProgramStringARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramStringARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programStringARB(Target, Format, String) -> 'ok' when Target :: enum(),Format :: enum(),String :: string(). programStringARB(Target,Format,String) -> StringLen = length(String), @@ -13133,14 +5909,14 @@ programStringARB(Target,Format,String) -> %% @doc glBindProgramARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindProgramARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec bindProgramARB(Target, Program) -> 'ok' when Target :: enum(),Program :: integer(). bindProgramARB(Target,Program) -> cast(5610, <<Target:?GLenum,Program:?GLuint>>). %% @doc glDeleteProgramsARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgramsARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec deleteProgramsARB(Programs) -> 'ok' when Programs :: [integer()]. deleteProgramsARB(Programs) -> ProgramsLen = length(Programs), @@ -13149,98 +5925,98 @@ deleteProgramsARB(Programs) -> %% @doc glGenProgramsARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenProgramsARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec genProgramsARB(N) -> [integer()] when N :: integer(). genProgramsARB(N) -> call(5612, <<N:?GLsizei>>). %% @doc glProgramEnvParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramEnvParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programEnvParameter4dARB(Target, Index, X, Y, Z, W) -> 'ok' when Target :: enum(),Index :: integer(),X :: float(),Y :: float(),Z :: float(),W :: float(). programEnvParameter4dARB(Target,Index,X,Y,Z,W) -> cast(5613, <<Target:?GLenum,Index:?GLuint,X:?GLdouble,Y:?GLdouble,Z:?GLdouble,W:?GLdouble>>). %% @doc glProgramEnvParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramEnvParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programEnvParameter4dvARB(Target, Index, Params) -> 'ok' when Target :: enum(),Index :: integer(),Params :: {float(),float(),float(),float()}. programEnvParameter4dvARB(Target,Index,{P1,P2,P3,P4}) -> cast(5614, <<Target:?GLenum,Index:?GLuint,P1:?GLdouble,P2:?GLdouble,P3:?GLdouble,P4:?GLdouble>>). %% @doc glProgramEnvParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramEnvParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programEnvParameter4fARB(Target, Index, X, Y, Z, W) -> 'ok' when Target :: enum(),Index :: integer(),X :: float(),Y :: float(),Z :: float(),W :: float(). programEnvParameter4fARB(Target,Index,X,Y,Z,W) -> cast(5615, <<Target:?GLenum,Index:?GLuint,X:?GLfloat,Y:?GLfloat,Z:?GLfloat,W:?GLfloat>>). %% @doc glProgramEnvParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramEnvParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programEnvParameter4fvARB(Target, Index, Params) -> 'ok' when Target :: enum(),Index :: integer(),Params :: {float(),float(),float(),float()}. programEnvParameter4fvARB(Target,Index,{P1,P2,P3,P4}) -> cast(5616, <<Target:?GLenum,Index:?GLuint,P1:?GLfloat,P2:?GLfloat,P3:?GLfloat,P4:?GLfloat>>). %% @doc glProgramLocalParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramLocalParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programLocalParameter4dARB(Target, Index, X, Y, Z, W) -> 'ok' when Target :: enum(),Index :: integer(),X :: float(),Y :: float(),Z :: float(),W :: float(). programLocalParameter4dARB(Target,Index,X,Y,Z,W) -> cast(5617, <<Target:?GLenum,Index:?GLuint,X:?GLdouble,Y:?GLdouble,Z:?GLdouble,W:?GLdouble>>). %% @doc glProgramLocalParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramLocalParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programLocalParameter4dvARB(Target, Index, Params) -> 'ok' when Target :: enum(),Index :: integer(),Params :: {float(),float(),float(),float()}. programLocalParameter4dvARB(Target,Index,{P1,P2,P3,P4}) -> cast(5618, <<Target:?GLenum,Index:?GLuint,P1:?GLdouble,P2:?GLdouble,P3:?GLdouble,P4:?GLdouble>>). %% @doc glProgramLocalParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramLocalParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programLocalParameter4fARB(Target, Index, X, Y, Z, W) -> 'ok' when Target :: enum(),Index :: integer(),X :: float(),Y :: float(),Z :: float(),W :: float(). programLocalParameter4fARB(Target,Index,X,Y,Z,W) -> cast(5619, <<Target:?GLenum,Index:?GLuint,X:?GLfloat,Y:?GLfloat,Z:?GLfloat,W:?GLfloat>>). %% @doc glProgramLocalParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramLocalParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec programLocalParameter4fvARB(Target, Index, Params) -> 'ok' when Target :: enum(),Index :: integer(),Params :: {float(),float(),float(),float()}. programLocalParameter4fvARB(Target,Index,{P1,P2,P3,P4}) -> cast(5620, <<Target:?GLenum,Index:?GLuint,P1:?GLfloat,P2:?GLfloat,P3:?GLfloat,P4:?GLfloat>>). %% @doc glGetProgramEnvParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramEnvParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getProgramEnvParameterdvARB(Target, Index) -> {float(),float(),float(),float()} when Target :: enum(),Index :: integer(). getProgramEnvParameterdvARB(Target,Index) -> call(5621, <<Target:?GLenum,Index:?GLuint>>). %% @doc glGetProgramEnvParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramEnvParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getProgramEnvParameterfvARB(Target, Index) -> {float(),float(),float(),float()} when Target :: enum(),Index :: integer(). getProgramEnvParameterfvARB(Target,Index) -> call(5622, <<Target:?GLenum,Index:?GLuint>>). %% @doc glGetProgramLocalParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramLocalParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getProgramLocalParameterdvARB(Target, Index) -> {float(),float(),float(),float()} when Target :: enum(),Index :: integer(). getProgramLocalParameterdvARB(Target,Index) -> call(5623, <<Target:?GLenum,Index:?GLuint>>). %% @doc glGetProgramLocalParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramLocalParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getProgramLocalParameterfvARB(Target, Index) -> {float(),float(),float(),float()} when Target :: enum(),Index :: integer(). getProgramLocalParameterfvARB(Target,Index) -> call(5624, <<Target:?GLenum,Index:?GLuint>>). %% @doc glGetProgramStringARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramStringARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getProgramStringARB(Target, Pname, String) -> 'ok' when Target :: enum(),Pname :: enum(),String :: mem(). getProgramStringARB(Target,Pname,String) -> send_bin(String), @@ -13248,42 +6024,42 @@ getProgramStringARB(Target,Pname,String) -> %% @doc glGetBufferParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetBufferParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getBufferParameterivARB(Target, Pname) -> [integer()] when Target :: enum(),Pname :: enum(). getBufferParameterivARB(Target,Pname) -> call(5626, <<Target:?GLenum,Pname:?GLenum>>). %% @doc glDeleteObjectARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteObjectARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec deleteObjectARB(Obj) -> 'ok' when Obj :: integer(). deleteObjectARB(Obj) -> cast(5627, <<Obj:?GLhandleARB>>). %% @doc glGetHandleARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetHandleARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getHandleARB(Pname) -> integer() when Pname :: enum(). getHandleARB(Pname) -> call(5628, <<Pname:?GLenum>>). %% @doc glDetachObjectARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDetachObjectARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec detachObjectARB(ContainerObj, AttachedObj) -> 'ok' when ContainerObj :: integer(),AttachedObj :: integer(). detachObjectARB(ContainerObj,AttachedObj) -> cast(5629, <<ContainerObj:?GLhandleARB,AttachedObj:?GLhandleARB>>). %% @doc glCreateShaderObjectARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCreateShaderObjectARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec createShaderObjectARB(ShaderType) -> integer() when ShaderType :: enum(). createShaderObjectARB(ShaderType) -> call(5630, <<ShaderType:?GLenum>>). %% @doc glShaderSourceARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glShaderSourceARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec shaderSourceARB(ShaderObj, String) -> 'ok' when ShaderObj :: integer(),String :: iolist(). shaderSourceARB(ShaderObj,String) -> StringTemp = list_to_binary([[Str|[0]] || Str <- String ]), @@ -13292,77 +6068,77 @@ shaderSourceARB(ShaderObj,String) -> %% @doc glCompileShaderARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompileShaderARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec compileShaderARB(ShaderObj) -> 'ok' when ShaderObj :: integer(). compileShaderARB(ShaderObj) -> cast(5632, <<ShaderObj:?GLhandleARB>>). %% @doc glCreateProgramObjectARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCreateProgramObjectARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec createProgramObjectARB() -> integer(). createProgramObjectARB() -> call(5633, <<>>). %% @doc glAttachObjectARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glAttachObjectARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec attachObjectARB(ContainerObj, Obj) -> 'ok' when ContainerObj :: integer(),Obj :: integer(). attachObjectARB(ContainerObj,Obj) -> cast(5634, <<ContainerObj:?GLhandleARB,Obj:?GLhandleARB>>). %% @doc glLinkProgramARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glLinkProgramARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec linkProgramARB(ProgramObj) -> 'ok' when ProgramObj :: integer(). linkProgramARB(ProgramObj) -> cast(5635, <<ProgramObj:?GLhandleARB>>). %% @doc glUseProgramObjectARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glUseProgramObjectARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec useProgramObjectARB(ProgramObj) -> 'ok' when ProgramObj :: integer(). useProgramObjectARB(ProgramObj) -> cast(5636, <<ProgramObj:?GLhandleARB>>). %% @doc glValidateProgramARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glValidateProgramARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec validateProgramARB(ProgramObj) -> 'ok' when ProgramObj :: integer(). validateProgramARB(ProgramObj) -> cast(5637, <<ProgramObj:?GLhandleARB>>). %% @doc glGetObjectParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetObjectParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getObjectParameterfvARB(Obj, Pname) -> float() when Obj :: integer(),Pname :: enum(). getObjectParameterfvARB(Obj,Pname) -> call(5638, <<Obj:?GLhandleARB,Pname:?GLenum>>). %% @doc glGetObjectParameterARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetObjectParameterARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getObjectParameterivARB(Obj, Pname) -> integer() when Obj :: integer(),Pname :: enum(). getObjectParameterivARB(Obj,Pname) -> call(5639, <<Obj:?GLhandleARB,Pname:?GLenum>>). %% @doc glGetInfoLogARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetInfoLogARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getInfoLogARB(Obj, MaxLength) -> string() when Obj :: integer(),MaxLength :: integer(). getInfoLogARB(Obj,MaxLength) -> call(5640, <<Obj:?GLhandleARB,MaxLength:?GLsizei>>). %% @doc glGetAttachedObjectsARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetAttachedObjectsARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getAttachedObjectsARB(ContainerObj, MaxCount) -> [integer()] when ContainerObj :: integer(),MaxCount :: integer(). getAttachedObjectsARB(ContainerObj,MaxCount) -> call(5641, <<ContainerObj:?GLhandleARB,MaxCount:?GLsizei>>). %% @doc glGetUniformLocationARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetUniformLocationARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getUniformLocationARB(ProgramObj, Name) -> integer() when ProgramObj :: integer(),Name :: string(). getUniformLocationARB(ProgramObj,Name) -> NameLen = length(Name), @@ -13370,35 +6146,35 @@ getUniformLocationARB(ProgramObj,Name) -> %% @doc glGetActiveUniformARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveUniformARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getActiveUniformARB(ProgramObj, Index, MaxLength) -> {Size :: integer(),Type :: enum(),Name :: string()} when ProgramObj :: integer(),Index :: integer(),MaxLength :: integer(). getActiveUniformARB(ProgramObj,Index,MaxLength) -> call(5643, <<ProgramObj:?GLhandleARB,Index:?GLuint,MaxLength:?GLsizei>>). %% @doc glGetUniformARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetUniformARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getUniformfvARB(ProgramObj, Location) -> matrix() when ProgramObj :: integer(),Location :: integer(). getUniformfvARB(ProgramObj,Location) -> call(5644, <<ProgramObj:?GLhandleARB,Location:?GLint>>). %% @doc glGetUniformARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetUniformARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getUniformivARB(ProgramObj, Location) -> {integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer()} when ProgramObj :: integer(),Location :: integer(). getUniformivARB(ProgramObj,Location) -> call(5645, <<ProgramObj:?GLhandleARB,Location:?GLint>>). %% @doc glGetShaderSourceARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetShaderSourceARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getShaderSourceARB(Obj, MaxLength) -> string() when Obj :: integer(),MaxLength :: integer(). getShaderSourceARB(Obj,MaxLength) -> call(5646, <<Obj:?GLhandleARB,MaxLength:?GLsizei>>). %% @doc glBindAttribLocationARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindAttribLocationARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec bindAttribLocationARB(ProgramObj, Index, Name) -> 'ok' when ProgramObj :: integer(),Index :: integer(),Name :: string(). bindAttribLocationARB(ProgramObj,Index,Name) -> NameLen = length(Name), @@ -13406,14 +6182,14 @@ bindAttribLocationARB(ProgramObj,Index,Name) -> %% @doc glGetActiveAttribARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveAttribARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getActiveAttribARB(ProgramObj, Index, MaxLength) -> {Size :: integer(),Type :: enum(),Name :: string()} when ProgramObj :: integer(),Index :: integer(),MaxLength :: integer(). getActiveAttribARB(ProgramObj,Index,MaxLength) -> call(5648, <<ProgramObj:?GLhandleARB,Index:?GLuint,MaxLength:?GLsizei>>). %% @doc glGetAttribLocationARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetAttribLocationARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getAttribLocationARB(ProgramObj, Name) -> integer() when ProgramObj :: integer(),Name :: string(). getAttribLocationARB(ProgramObj,Name) -> NameLen = length(Name), @@ -13429,7 +6205,7 @@ getAttribLocationARB(ProgramObj,Name) -> %% , then the name is not a renderbuffer object and ``gl:isRenderbuffer'' returns `?GL_FALSE' %% . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsRenderbuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsRenderbuffer.xhtml">external</a> documentation. -spec isRenderbuffer(Renderbuffer) -> 0|1 when Renderbuffer :: integer(). isRenderbuffer(Renderbuffer) -> call(5650, <<Renderbuffer:?GLuint>>). @@ -13442,7 +6218,7 @@ isRenderbuffer(Renderbuffer) -> %% call to {@link gl:genRenderbuffers/1} , or zero to break the existing binding of a renderbuffer %% object to `Target' . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindRenderbuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindRenderbuffer.xhtml">external</a> documentation. -spec bindRenderbuffer(Target, Renderbuffer) -> 'ok' when Target :: enum(),Renderbuffer :: integer(). bindRenderbuffer(Target,Renderbuffer) -> cast(5651, <<Target:?GLenum,Renderbuffer:?GLuint>>). @@ -13457,14 +6233,7 @@ bindRenderbuffer(Target,Renderbuffer) -> %% it is as though {@link gl:bindRenderbuffer/2} had been executed with a `Target' of `?GL_RENDERBUFFER' %% and a `Name' of zero. %% -%% If a renderbuffer object is attached to one or more attachment points in the currently -%% bound framebuffer, then it as if {@link gl:framebufferRenderbuffer/4} had been called, -%% with a `Renderbuffer' of zero for each attachment point to which this image was attached -%% in the currently bound framebuffer. In other words, this renderbuffer object is first -%% detached from all attachment ponits in the currently bound framebuffer. Note that the -%% renderbuffer image is specifically `not' detached from any non-bound framebuffers. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteRenderbuffers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteRenderbuffers.xhtml">external</a> documentation. -spec deleteRenderbuffers(Renderbuffers) -> 'ok' when Renderbuffers :: [integer()]. deleteRenderbuffers(Renderbuffers) -> RenderbuffersLen = length(Renderbuffers), @@ -13478,13 +6247,7 @@ deleteRenderbuffers(Renderbuffers) -> %% is guaranteed that none of the returned names was in use immediately before the call to ``gl:genRenderbuffers'' %% . %% -%% Renderbuffer object names returned by a call to ``gl:genRenderbuffers'' are not returned -%% by subsequent calls, unless they are first deleted with {@link gl:deleteRenderbuffers/1} . -%% -%% The names returned in `Renderbuffers' are marked as used, for the purposes of ``gl:genRenderbuffers'' -%% only, but they acquire state and type only when they are first bound. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenRenderbuffers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenRenderbuffers.xhtml">external</a> documentation. -spec genRenderbuffers(N) -> [integer()] when N :: integer(). genRenderbuffers(N) -> call(5653, <<N:?GLsizei>>). @@ -13494,18 +6257,7 @@ genRenderbuffers(N) -> %% ``gl:renderbufferStorage'' is equivalent to calling {@link gl:renderbufferStorageMultisample/5} %% with the `Samples' set to zero. %% -%% The target of the operation, specified by `Target' must be `?GL_RENDERBUFFER'. -%% `Internalformat' specifies the internal format to be used for the renderbuffer object's -%% storage and must be a color-renderable, depth-renderable, or stencil-renderable format. `Width' -%% and `Height' are the dimensions, in pixels, of the renderbuffer. Both `Width' -%% and `Height' must be less than or equal to the value of `?GL_MAX_RENDERBUFFER_SIZE' -%% . -%% -%% Upon success, ``gl:renderbufferStorage'' deletes any existing data store for the renderbuffer -%% image and the contents of the data store after calling ``gl:renderbufferStorage'' are -%% undefined. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glRenderbufferStorage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glRenderbufferStorage.xhtml">external</a> documentation. -spec renderbufferStorage(Target, Internalformat, Width, Height) -> 'ok' when Target :: enum(),Internalformat :: enum(),Width :: integer(),Height :: integer(). renderbufferStorage(Target,Internalformat,Width,Height) -> cast(5654, <<Target:?GLenum,Internalformat:?GLenum,Width:?GLsizei,Height:?GLsizei>>). @@ -13520,20 +6272,7 @@ renderbufferStorage(Target,Internalformat,Width,Height) -> %% , `?GL_RENDERBUFFER_DEPTH_SIZE', `?GL_RENDERBUFFER_DEPTH_SIZE', `?GL_RENDERBUFFER_STENCIL_SIZE' %% , or `?GL_RENDERBUFFER_SAMPLES'. %% -%% Upon a successful return from ``gl:getRenderbufferParameteriv'', if `Pname' is `?GL_RENDERBUFFER_WIDTH' -%% , `?GL_RENDERBUFFER_HEIGHT', `?GL_RENDERBUFFER_INTERNAL_FORMAT', or `?GL_RENDERBUFFER_SAMPLES' -%% , then `Params' will contain the width in pixels, the height in pixels, the internal -%% format, or the number of samples, respectively, of the image of the renderbuffer currently -%% bound to `Target' . -%% -%% If `Pname' is `?GL_RENDERBUFFER_RED_SIZE', `?GL_RENDERBUFFER_GREEN_SIZE', -%% `?GL_RENDERBUFFER_BLUE_SIZE', `?GL_RENDERBUFFER_ALPHA_SIZE', `?GL_RENDERBUFFER_DEPTH_SIZE' -%% , or `?GL_RENDERBUFFER_STENCIL_SIZE', then `Params' will contain the actual -%% resolutions (not the resolutions specified when the image array was defined) for the red, -%% green, blue, alpha depth, or stencil components, respectively, of the image of the renderbuffer -%% currently bound to `Target' . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetRenderbufferParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetRenderbufferParameter.xhtml">external</a> documentation. -spec getRenderbufferParameteriv(Target, Pname) -> integer() when Target :: enum(),Pname :: enum(). getRenderbufferParameteriv(Target,Pname) -> call(5655, <<Target:?GLenum,Pname:?GLenum>>). @@ -13547,7 +6286,7 @@ getRenderbufferParameteriv(Target,Pname) -> %% , by that has not yet been bound through a call to {@link gl:bindFramebuffer/2} , then the %% name is not a framebuffer object and ``gl:isFramebuffer'' returns `?GL_FALSE'. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsFramebuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsFramebuffer.xhtml">external</a> documentation. -spec isFramebuffer(Framebuffer) -> 0|1 when Framebuffer :: integer(). isFramebuffer(Framebuffer) -> call(5656, <<Framebuffer:?GLuint>>). @@ -13565,7 +6304,7 @@ isFramebuffer(Framebuffer) -> %% a call to {@link gl:genFramebuffers/1} , or zero to break the existing binding of a framebuffer %% object to `Target' . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindFramebuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindFramebuffer.xhtml">external</a> documentation. -spec bindFramebuffer(Target, Framebuffer) -> 'ok' when Target :: enum(),Framebuffer :: integer(). bindFramebuffer(Target,Framebuffer) -> cast(5657, <<Target:?GLenum,Framebuffer:?GLuint>>). @@ -13580,7 +6319,7 @@ bindFramebuffer(Target,Framebuffer) -> %% or `?GL_READ_FRAMEBUFFER' is deleted, it is as though {@link gl:bindFramebuffer/2} %% had been executed with the corresponding `Target' and `Framebuffer' zero. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteFramebuffers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteFramebuffers.xhtml">external</a> documentation. -spec deleteFramebuffers(Framebuffers) -> 'ok' when Framebuffers :: [integer()]. deleteFramebuffers(Framebuffers) -> FramebuffersLen = length(Framebuffers), @@ -13594,13 +6333,7 @@ deleteFramebuffers(Framebuffers) -> %% that none of the returned names was in use immediately before the call to ``gl:genFramebuffers'' %% . %% -%% Framebuffer object names returned by a call to ``gl:genFramebuffers'' are not returned -%% by subsequent calls, unless they are first deleted with {@link gl:deleteFramebuffers/1} . -%% -%% The names returned in `Ids' are marked as used, for the purposes of ``gl:genFramebuffers'' -%% only, but they acquire state and type only when they are first bound. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenFramebuffers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenFramebuffers.xhtml">external</a> documentation. -spec genFramebuffers(N) -> [integer()] when N :: integer(). genFramebuffers(N) -> call(5659, <<N:?GLsizei>>). @@ -13612,46 +6345,7 @@ genFramebuffers(N) -> %% or `?GL_FRAMEBUFFER'. `?GL_FRAMEBUFFER' is equivalent to `?GL_DRAW_FRAMEBUFFER' %% . %% -%% The return value is `?GL_FRAMEBUFFER_COMPLETE' if the framebuffer bound to `Target' -%% is complete. Otherwise, the return value is determined as follows: -%% -%% `?GL_FRAMEBUFFER_UNDEFINED' is returned if `Target' is the default framebuffer, -%% but the default framebuffer does not exist. -%% -%% `?GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT' is returned if any of the framebuffer attachment -%% points are framebuffer incomplete. -%% -%% `?GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT' is returned if the framebuffer does -%% not have at least one image attached to it. -%% -%% `?GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER' is returned if the value of `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' -%% is `?GL_NONE' for any color attachment point(s) named by `?GL_DRAWBUFFERi'. -%% -%% `?GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER' is returned if `?GL_READ_BUFFER' is -%% not `?GL_NONE' and the value of `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' is `?GL_NONE' -%% for the color attachment point named by `?GL_READ_BUFFER'. -%% -%% `?GL_FRAMEBUFFER_UNSUPPORTED' is returned if the combination of internal formats -%% of the attached images violates an implementation-dependent set of restrictions. -%% -%% `?GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE' is returned if the value of `?GL_RENDERBUFFER_SAMPLES' -%% is not the same for all attached renderbuffers; if the value of `?GL_TEXTURE_SAMPLES' -%% is the not same for all attached textures; or, if the attached images are a mix of renderbuffers -%% and textures, the value of `?GL_RENDERBUFFER_SAMPLES' does not match the value of `?GL_TEXTURE_SAMPLES' -%% . -%% -%% `?GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE' is also returned if the value of `?GL_TEXTURE_FIXED_SAMPLE_LOCATIONS' -%% is not the same for all attached textures; or, if the attached images are a mix of renderbuffers -%% and textures, the value of `?GL_TEXTURE_FIXED_SAMPLE_LOCATIONS' is not `?GL_TRUE' -%% for all attached textures. -%% -%% `?GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS' is returned if any framebuffer attachment -%% is layered, and any populated attachment is not layered, or if all populated color attachments -%% are not from textures of the same target. -%% -%% Additionally, if an error occurs, zero is returned. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCheckFramebufferStatus.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCheckFramebufferStatus.xhtml">external</a> documentation. -spec checkFramebufferStatus(Target) -> enum() when Target :: enum(). checkFramebufferStatus(Target) -> call(5660, <<Target:?GLenum>>). @@ -13684,24 +6378,7 @@ framebufferTexture3D(Target,Attachment,Textarget,Texture,Level,Zoffset) -> %% buffer identified by `Attachment' of the framebuffer currently bound to `Target' . %% %% -%% The value of `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' for the specified attachment -%% point is set to `?GL_RENDERBUFFER' and the value of `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME' -%% is set to `Renderbuffer' . All other state values of the attachment point specified -%% by `Attachment' are set to their default values. No change is made to the state of -%% the renderbuuffer object and any previous attachment to the `Attachment' logical -%% buffer of the framebuffer `Target' is broken. -%% -%% Calling ``gl:framebufferRenderbuffer'' with the renderbuffer name zero will detach -%% the image, if any, identified by `Attachment' , in the framebuffer currently bound -%% to `Target' . All state values of the attachment point specified by attachment in -%% the object bound to target are set to their default values. -%% -%% Setting `Attachment' to the value `?GL_DEPTH_STENCIL_ATTACHMENT' is a special -%% case causing both the depth and stencil attachments of the framebuffer object to be set -%% to `Renderbuffer' , which should have the base internal format `?GL_DEPTH_STENCIL' -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFramebufferRenderbuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glFramebufferRenderbuffer.xhtml">external</a> documentation. -spec framebufferRenderbuffer(Target, Attachment, Renderbuffertarget, Renderbuffer) -> 'ok' when Target :: enum(),Attachment :: enum(),Renderbuffertarget :: enum(),Renderbuffer :: integer(). framebufferRenderbuffer(Target,Attachment,Renderbuffertarget,Renderbuffer) -> cast(5664, <<Target:?GLenum,Attachment:?GLenum,Renderbuffertarget:?GLenum,Renderbuffer:?GLuint>>). @@ -13713,91 +6390,7 @@ framebufferRenderbuffer(Target,Attachment,Renderbuffertarget,Renderbuffer) -> %% be `?GL_DRAW_FRAMEBUFFER', `?GL_READ_FRAMEBUFFER' or `?GL_FRAMEBUFFER'. `?GL_FRAMEBUFFER' %% is equivalent to `?GL_DRAW_FRAMEBUFFER'. %% -%% If the default framebuffer is bound to `Target' then `Attachment' must be one -%% of `?GL_FRONT_LEFT', `?GL_FRONT_RIGHT', `?GL_BACK_LEFT', or `?GL_BACK_RIGHT' -%% , identifying a color buffer, `?GL_DEPTH', identifying the depth buffer, or `?GL_STENCIL' -%% , identifying the stencil buffer. -%% -%% If a framebuffer object is bound, then `Attachment' must be one of `?GL_COLOR_ATTACHMENT' -%% `i', `?GL_DEPTH_ATTACHMENT', `?GL_STENCIL_ATTACHMENT', or `?GL_DEPTH_STENCIL_ATTACHMENT' -%% . `i' in `?GL_COLOR_ATTACHMENT'`i' must be in the range zero to the value -%% of `?GL_MAX_COLOR_ATTACHMENTS' - 1. -%% -%% If `Attachment' is `?GL_DEPTH_STENCIL_ATTACHMENT' and different objects are -%% bound to the depth and stencil attachment points of `Target' the query will fail. -%% If the same object is bound to both attachment points, information about that object will -%% be returned. -%% -%% Upon successful return from ``gl:getFramebufferAttachmentParameteriv'', if `Pname' -%% is `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE', then `Params' will contain one of `?GL_NONE' -%% , `?GL_FRAMEBUFFER_DEFAULT', `?GL_TEXTURE', or `?GL_RENDERBUFFER', identifying -%% the type of object which contains the attached image. Other values accepted for `Pname' -%% depend on the type of object, as described below. -%% -%% If the value of `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' is `?GL_NONE', no -%% framebuffer is bound to `Target' . In this case querying `Pname' `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME' -%% will return zero, and all other queries will generate an error. -%% -%% If the value of `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' is not `?GL_NONE', -%% these queries apply to all other framebuffer types: -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE', `?GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE' -%% , `?GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE', `?GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE' -%% , `?GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE', or `?GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE' -%% , then `Params' will contain the number of bits in the corresponding red, green, -%% blue, alpha, depth, or stencil component of the specified attachment. Zero is returned -%% if the requested component is not present in `Attachment' . -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE', `Params' will -%% contain the format of components of the specified attachment, one of `?GL_FLOAT', `GL_INT' -%% , `GL_UNSIGNED_INT' , `GL_SIGNED_NORMALIZED' , or `GL_UNSIGNED_NORMALIZED' -%% for floating-point, signed integer, unsigned integer, signed normalized fixed-point, or -%% unsigned normalized fixed-point components respectively. Only color buffers may have integer -%% components. -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING', `Param' will -%% contain the encoding of components of the specified attachment, one of `?GL_LINEAR' -%% or `?GL_SRGB' for linear or sRGB-encoded components, respectively. Only color buffer -%% components may be sRGB-encoded; such components are treated as described in sections 4.1.7 -%% and 4.1.8. For the default framebuffer, color encoding is determined by the implementation. -%% For framebuffer objects, components are sRGB-encoded if the internal format of a color -%% attachment is one of the color-renderable SRGB formats. -%% -%% If the value of `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' is `?GL_RENDERBUFFER', -%% then: -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME', `Params' will -%% contain the name of the renderbuffer object which contains the attached image. -%% -%% If the value of `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' is `?GL_TEXTURE', -%% then: -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME', then `Params' -%% will contain the name of the texture object which contains the attached image. -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL', then `Params' -%% will contain the mipmap level of the texture object which contains the attached image. -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE' and the texture -%% object named `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME' is a cube map texture, then `Params' -%% will contain the cube map face of the cubemap texture object which contains the attached -%% image. Otherwise `Params' will contain the value zero. -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER' and the texture object -%% named `?GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME' is a layer of a three-dimensional -%% texture or a one-or two-dimensional array texture, then `Params' will contain the -%% number of the texture layer which contains the attached image. Otherwise `Params' -%% will contain the value zero. -%% -%% If `Pname' is `?GL_FRAMEBUFFER_ATTACHMENT_LAYERED', then `Params' will -%% contain `?GL_TRUE' if an entire level of a three-dimesional texture, cube map texture, -%% or one-or two-dimensional array texture is attached. Otherwise, `Params' will contain -%% `?GL_FALSE'. -%% -%% Any combinations of framebuffer type and `Pname' not described above will generate -%% an error. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetFramebufferAttachmentParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetFramebufferAttachmentParameter.xhtml">external</a> documentation. -spec getFramebufferAttachmentParameteriv(Target, Attachment, Pname) -> integer() when Target :: enum(),Attachment :: enum(),Pname :: enum(). getFramebufferAttachmentParameteriv(Target,Attachment,Pname) -> call(5665, <<Target:?GLenum,Attachment:?GLenum,Pname:?GLenum>>). @@ -13808,16 +6401,7 @@ getFramebufferAttachmentParameteriv(Target,Attachment,Pname) -> %% the active texture unit. For cube map textures, a `?GL_INVALID_OPERATION' error is %% generated if the texture attached to `Target' is not cube complete. %% -%% Mipmap generation replaces texel array levels level base+1 through q with arrays derived -%% from the level base array, regardless of their previous contents. All other mimap arrays, -%% including the level base array, are left unchanged by this computation. -%% -%% The internal formats of the derived mipmap arrays all match those of the level base -%% array. The contents of the derived arrays are computed by repeated, filtered reduction -%% of the level base array. For one- and two-dimensional texture arrays, each layer is filtered -%% independently. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenerateMipmap.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenerateMipmap.xhtml">external</a> documentation. -spec generateMipmap(Target) -> 'ok' when Target :: enum(). generateMipmap(Target) -> cast(5666, <<Target:?GLenum>>). @@ -13833,33 +6417,7 @@ generateMipmap(Target) -> %% by the locations ( `DstX0' ; `DstY0' ) and ( `DstX1' ; `DstY1' ). The lower %% bounds of the rectangle are inclusive, while the upper bounds are exclusive. %% -%% The actual region taken from the read framebuffer is limited to the intersection of the -%% source buffers being transferred, which may include the color buffer selected by the read -%% buffer, the depth buffer, and/or the stencil buffer depending on mask. The actual region -%% written to the draw framebuffer is limited to the intersection of the destination buffers -%% being written, which may include multiple draw buffers, the depth buffer, and/or the stencil -%% buffer depending on mask. Whether or not the source or destination regions are altered -%% due to these limits, the scaling and offset applied to pixels being transferred is performed -%% as though no such limits were present. -%% -%% If the sizes of the source and destination rectangles are not equal, `Filter' specifies -%% the interpolation method that will be applied to resize the source image , and must be `?GL_NEAREST' -%% or `?GL_LINEAR'. `?GL_LINEAR' is only a valid interpolation method for the -%% color buffer. If `Filter' is not `?GL_NEAREST' and `Mask' includes `?GL_DEPTH_BUFFER_BIT' -%% or `?GL_STENCIL_BUFFER_BIT', no data is transferred and a `?GL_INVALID_OPERATION' -%% error is generated. -%% -%% If `Filter' is `?GL_LINEAR' and the source rectangle would require sampling -%% outside the bounds of the source framebuffer, values are read as if the `?GL_CLAMP_TO_EDGE' -%% texture wrapping mode were applied. -%% -%% When the color buffer is transferred, values are taken from the read buffer of the read -%% framebuffer and written to each of the draw buffers of the draw framebuffer. -%% -%% If the source and destination rectangles overlap or are the same, and the read and draw -%% buffers are the same, the result of the operation is undefined. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBlitFramebuffer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlitFramebuffer.xhtml">external</a> documentation. -spec blitFramebuffer(SrcX0, SrcY0, SrcX1, SrcY1, DstX0, DstY0, DstX1, DstY1, Mask, Filter) -> 'ok' when SrcX0 :: integer(),SrcY0 :: integer(),SrcX1 :: integer(),SrcY1 :: integer(),DstX0 :: integer(),DstY0 :: integer(),DstX1 :: integer(),DstY1 :: integer(),Mask :: integer(),Filter :: enum(). blitFramebuffer(SrcX0,SrcY0,SrcX1,SrcY1,DstX0,DstY0,DstX1,DstY1,Mask,Filter) -> cast(5667, <<SrcX0:?GLint,SrcY0:?GLint,SrcX1:?GLint,SrcY1:?GLint,DstX0:?GLint,DstY0:?GLint,DstX1:?GLint,DstY1:?GLint,Mask:?GLbitfield,Filter:?GLenum>>). @@ -13869,21 +6427,7 @@ blitFramebuffer(SrcX0,SrcY0,SrcX1,SrcY1,DstX0,DstY0,DstX1,DstY1,Mask,Filter) -> %% ``gl:renderbufferStorageMultisample'' establishes the data storage, format, dimensions %% and number of samples of a renderbuffer object's image. %% -%% The target of the operation, specified by `Target' must be `?GL_RENDERBUFFER'. -%% `Internalformat' specifies the internal format to be used for the renderbuffer object's -%% storage and must be a color-renderable, depth-renderable, or stencil-renderable format. `Width' -%% and `Height' are the dimensions, in pixels, of the renderbuffer. Both `Width' -%% and `Height' must be less than or equal to the value of `?GL_MAX_RENDERBUFFER_SIZE' -%% . `Samples' specifies the number of samples to be used for the renderbuffer object's -%% image, and must be less than or equal to the value of `?GL_MAX_SAMPLES'. If `Internalformat' -%% is a signed or unsigned integer format then `Samples' must be less than or equal -%% to the value of `?GL_MAX_INTEGER_SAMPLES'. -%% -%% Upon success, ``gl:renderbufferStorageMultisample'' deletes any existing data store -%% for the renderbuffer image and the contents of the data store after calling ``gl:renderbufferStorageMultisample'' -%% are undefined. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glRenderbufferStorageMultisample.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glRenderbufferStorageMultisample.xhtml">external</a> documentation. -spec renderbufferStorageMultisample(Target, Samples, Internalformat, Width, Height) -> 'ok' when Target :: enum(),Samples :: integer(),Internalformat :: enum(),Width :: integer(),Height :: integer(). renderbufferStorageMultisample(Target,Samples,Internalformat,Width,Height) -> cast(5668, <<Target:?GLenum,Samples:?GLsizei,Internalformat:?GLenum,Width:?GLsizei,Height:?GLsizei>>). @@ -13909,7 +6453,7 @@ framebufferTextureFaceARB(Target,Attachment,Texture,Level,Face) -> %% mapped range of the buffer. ``gl:flushMappedBufferRange'' may be called multiple times %% to indicate distinct subranges of the mapping which require flushing. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFlushMappedBufferRange.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glFlushMappedBufferRange.xhtml">external</a> documentation. -spec flushMappedBufferRange(Target, Offset, Length) -> 'ok' when Target :: enum(),Offset :: integer(),Length :: integer(). flushMappedBufferRange(Target,Offset,Length) -> cast(5671, <<Target:?GLenum,0:32,Offset:?GLintptr,Length:?GLsizeiptr>>). @@ -13920,11 +6464,7 @@ flushMappedBufferRange(Target,Offset,Length) -> %% is the name of a vertex array object previously returned from a call to {@link gl:genVertexArrays/1} %% , or zero to break the existing vertex array object binding. %% -%% If no vertex array object with name `Array' exists, one is created when `Array' -%% is first bound. If the bind is successful no change is made to the state of the vertex -%% array object, and any previous vertex array object binding is broken. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindVertexArray.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml">external</a> documentation. -spec bindVertexArray(Array) -> 'ok' when Array :: integer(). bindVertexArray(Array) -> cast(5672, <<Array:?GLuint>>). @@ -13937,7 +6477,7 @@ bindVertexArray(Array) -> %% is deleted, the binding for that object reverts to zero and the default vertex array becomes %% current. Unused names in `Arrays' are silently ignored, as is the value zero. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteVertexArrays.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteVertexArrays.xhtml">external</a> documentation. -spec deleteVertexArrays(Arrays) -> 'ok' when Arrays :: [integer()]. deleteVertexArrays(Arrays) -> ArraysLen = length(Arrays), @@ -13951,13 +6491,7 @@ deleteVertexArrays(Arrays) -> %% guaranteed that none of the returned names was in use immediately before the call to ``gl:genVertexArrays'' %% . %% -%% Vertex array object names returned by a call to ``gl:genVertexArrays'' are not returned -%% by subsequent calls, unless they are first deleted with {@link gl:deleteVertexArrays/1} . -%% -%% The names returned in `Arrays' are marked as used, for the purposes of ``gl:genVertexArrays'' -%% only, but they acquire state and type only when they are first bound. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenVertexArrays.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml">external</a> documentation. -spec genVertexArrays(N) -> [integer()] when N :: integer(). genVertexArrays(N) -> call(5674, <<N:?GLsizei>>). @@ -13971,7 +6505,7 @@ genVertexArrays(N) -> %% been bound through a call to {@link gl:bindVertexArray/1} , then the name is not a vertex %% array object and ``gl:isVertexArray'' returns `?GL_FALSE'. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsVertexArray.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsVertexArray.xhtml">external</a> documentation. -spec isVertexArray(Array) -> 0|1 when Array :: integer(). isVertexArray(Array) -> call(5675, <<Array:?GLuint>>). @@ -13981,24 +6515,7 @@ isVertexArray(Array) -> %% ``gl:getUniformIndices'' retrieves the indices of a number of uniforms within `Program' %% . %% -%% `Program' must be the name of a program object for which the command {@link gl:linkProgram/1} -%% must have been called in the past, although it is not required that {@link gl:linkProgram/1} -%% must have succeeded. The link could have failed because the number of active uniforms -%% exceeded the limit. -%% -%% `UniformCount' indicates both the number of elements in the array of names `UniformNames' -%% and the number of indices that may be written to `UniformIndices' . -%% -%% `UniformNames' contains a list of `UniformCount' name strings identifying the -%% uniform names to be queried for indices. For each name string in `UniformNames' , -%% the index assigned to the active uniform of that name will be written to the corresponding -%% element of `UniformIndices' . If a string in `UniformNames' is not the name of -%% an active uniform, the special value `?GL_INVALID_INDEX' will be written to the corresponding -%% element of `UniformIndices' . -%% -%% If an error occurs, nothing is written to `UniformIndices' . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetUniformIndices.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetUniformIndices.xhtml">external</a> documentation. -spec getUniformIndices(Program, UniformNames) -> [integer()] when Program :: integer(),UniformNames :: iolist(). getUniformIndices(Program,UniformNames) -> UniformNamesTemp = list_to_binary([[Str|[0]] || Str <- UniformNames ]), @@ -14007,7 +6524,7 @@ getUniformIndices(Program,UniformNames) -> %% @doc glGetActiveUniforms %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveUniforms.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getActiveUniformsiv(Program, UniformIndices, Pname) -> [integer()] when Program :: integer(),UniformIndices :: [integer()],Pname :: enum(). getActiveUniformsiv(Program,UniformIndices,Pname) -> UniformIndicesLen = length(UniformIndices), @@ -14026,19 +6543,7 @@ getActiveUniformsiv(Program,UniformIndices,Pname) -> %% is given by the value of `?GL_ACTIVE_UNIFORM_MAX_LENGTH', which can be queried with {@link gl:getProgramiv/2} %% . %% -%% If ``gl:getActiveUniformName'' is not successful, nothing is written to `Length' -%% or `UniformName' . -%% -%% `Program' must be the name of a program for which the command {@link gl:linkProgram/1} -%% has been issued in the past. It is not necessary for `Program' to have been linked -%% successfully. The link could have failed because the number of active uniforms exceeded -%% the limit. -%% -%% `UniformIndex' must be an active uniform index of the program `Program' , in -%% the range zero to `?GL_ACTIVE_UNIFORMS' - 1. The value of `?GL_ACTIVE_UNIFORMS' -%% can be queried with {@link gl:getProgramiv/2} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveUniformName.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniformName.xhtml">external</a> documentation. -spec getActiveUniformName(Program, UniformIndex, BufSize) -> string() when Program :: integer(),UniformIndex :: integer(),BufSize :: integer(). getActiveUniformName(Program,UniformIndex,BufSize) -> call(5678, <<Program:?GLuint,UniformIndex:?GLuint,BufSize:?GLsizei>>). @@ -14048,21 +6553,7 @@ getActiveUniformName(Program,UniformIndex,BufSize) -> %% ``gl:getUniformBlockIndex'' retrieves the index of a uniform block within `Program' . %% %% -%% `Program' must be the name of a program object for which the command {@link gl:linkProgram/1} -%% must have been called in the past, although it is not required that {@link gl:linkProgram/1} -%% must have succeeded. The link could have failed because the number of active uniforms -%% exceeded the limit. -%% -%% `UniformBlockName' must contain a nul-terminated string specifying the name of the -%% uniform block. -%% -%% ``gl:getUniformBlockIndex'' returns the uniform block index for the uniform block named -%% `UniformBlockName' of `Program' . If `UniformBlockName' does not identify -%% an active uniform block of `Program' , ``gl:getUniformBlockIndex'' returns the special -%% identifier, `?GL_INVALID_INDEX'. Indices of the active uniform blocks of a program -%% are assigned in consecutive order, beginning with zero. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetUniformBlockIndex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetUniformBlockIndex.xhtml">external</a> documentation. -spec getUniformBlockIndex(Program, UniformBlockName) -> integer() when Program :: integer(),UniformBlockName :: string(). getUniformBlockIndex(Program,UniformBlockName) -> UniformBlockNameLen = length(UniformBlockName), @@ -14073,49 +6564,7 @@ getUniformBlockIndex(Program,UniformBlockName) -> %% ``gl:getActiveUniformBlockiv'' retrieves information about an active uniform block within %% `Program' . %% -%% `Program' must be the name of a program object for which the command {@link gl:linkProgram/1} -%% must have been called in the past, although it is not required that {@link gl:linkProgram/1} -%% must have succeeded. The link could have failed because the number of active uniforms -%% exceeded the limit. -%% -%% `UniformBlockIndex' is an active uniform block index of `Program' , and must -%% be less than the value of `?GL_ACTIVE_UNIFORM_BLOCKS'. -%% -%% Upon success, the uniform block parameter(s) specified by `Pname' are returned in `Params' -%% . If an error occurs, nothing will be written to `Params' . -%% -%% If `Pname' is `?GL_UNIFORM_BLOCK_BINDING', then the index of the uniform buffer -%% binding point last selected by the uniform block specified by `UniformBlockIndex' -%% for `Program' is returned. If no uniform block has been previously specified, zero -%% is returned. -%% -%% If `Pname' is `?GL_UNIFORM_BLOCK_DATA_SIZE', then the implementation-dependent -%% minimum total buffer object size, in basic machine units, required to hold all active -%% uniforms in the uniform block identified by `UniformBlockIndex' is returned. It is -%% neither guaranteed nor expected that a given implementation will arrange uniform values -%% as tightly packed in a buffer object. The exception to this is the `std140 uniform block layout' -%% , which guarantees specific packing behavior and does not require the application to query -%% for offsets and strides. In this case the minimum size may still be queried, even though -%% it is determined in advance based only on the uniform block declaration. -%% -%% If `Pname' is `?GL_UNIFORM_BLOCK_NAME_LENGTH', then the total length (including -%% the nul terminator) of the name of the uniform block identified by `UniformBlockIndex' -%% is returned. -%% -%% If `Pname' is `?GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS', then the number of active -%% uniforms in the uniform block identified by `UniformBlockIndex' is returned. -%% -%% If `Pname' is `?GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES', then a list of the -%% active uniform indices for the uniform block identified by `UniformBlockIndex' is -%% returned. The number of elements that will be written to `Params' is the value of `?GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS' -%% for `UniformBlockIndex' . -%% -%% If `Pname' is `?GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER', `?GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER' -%% , or `?GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER', then a boolean value indicating -%% whether the uniform block identified by `UniformBlockIndex' is referenced by the -%% vertex, geometry, or fragment programming stages of program, respectively, is returned. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveUniformBlock.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniformBlock.xhtml">external</a> documentation. -spec getActiveUniformBlockiv(Program, UniformBlockIndex, Pname, Params) -> 'ok' when Program :: integer(),UniformBlockIndex :: integer(),Pname :: enum(),Params :: mem(). getActiveUniformBlockiv(Program,UniformBlockIndex,Pname,Params) -> send_bin(Params), @@ -14126,26 +6575,7 @@ getActiveUniformBlockiv(Program,UniformBlockIndex,Pname,Params) -> %% ``gl:getActiveUniformBlockName'' retrieves the name of the active uniform block at `UniformBlockIndex' %% within `Program' . %% -%% `Program' must be the name of a program object for which the command {@link gl:linkProgram/1} -%% must have been called in the past, although it is not required that {@link gl:linkProgram/1} -%% must have succeeded. The link could have failed because the number of active uniforms -%% exceeded the limit. -%% -%% `UniformBlockIndex' is an active uniform block index of `Program' , and must -%% be less than the value of `?GL_ACTIVE_UNIFORM_BLOCKS'. -%% -%% Upon success, the name of the uniform block identified by `UnifomBlockIndex' is -%% returned into `UniformBlockName' . The name is nul-terminated. The actual number of -%% characters written into `UniformBlockName' , excluding the nul terminator, is returned -%% in `Length' . If `Length' is NULL, no length is returned. -%% -%% `BufSize' contains the maximum number of characters (including the nul terminator) -%% that will be written into `UniformBlockName' . -%% -%% If an error occurs, nothing will be written to `UniformBlockName' or `Length' . -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveUniformBlockName.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockName.xhtml">external</a> documentation. -spec getActiveUniformBlockName(Program, UniformBlockIndex, BufSize) -> string() when Program :: integer(),UniformBlockIndex :: integer(),BufSize :: integer(). getActiveUniformBlockName(Program,UniformBlockIndex,BufSize) -> call(5681, <<Program:?GLuint,UniformBlockIndex:?GLuint,BufSize:?GLsizei>>). @@ -14157,15 +6587,7 @@ getActiveUniformBlockName(Program,UniformBlockIndex,BufSize) -> %% `Program' is the name of a program object for which the command {@link gl:linkProgram/1} %% has been issued in the past. %% -%% If successful, ``gl:uniformBlockBinding'' specifies that `Program' will use the -%% data store of the buffer object bound to the binding point `UniformBlockBinding' -%% to extract the values of the uniforms in the uniform block identified by `UniformBlockIndex' -%% . -%% -%% When a program object is linked or re-linked, the uniform buffer object binding point -%% assigned to each of its active uniform blocks is reset to zero. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glUniformBlockBinding.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glUniformBlockBinding.xhtml">external</a> documentation. -spec uniformBlockBinding(Program, UniformBlockIndex, UniformBlockBinding) -> 'ok' when Program :: integer(),UniformBlockIndex :: integer(),UniformBlockBinding :: integer(). uniformBlockBinding(Program,UniformBlockIndex,UniformBlockBinding) -> cast(5682, <<Program:?GLuint,UniformBlockIndex:?GLuint,UniformBlockBinding:?GLuint>>). @@ -14177,21 +6599,7 @@ uniformBlockBinding(Program,UniformBlockIndex,UniformBlockBinding) -> %% by `Size' is copied from the source, at offset `Readoffset' to the destination %% at `Writeoffset' , also in basic machine units. %% -%% `Readtarget' and `Writetarget' must be `?GL_ARRAY_BUFFER', `?GL_COPY_READ_BUFFER' -%% , `?GL_COPY_WRITE_BUFFER', `?GL_ELEMENT_ARRAY_BUFFER', `?GL_PIXEL_PACK_BUFFER' -%% , `?GL_PIXEL_UNPACK_BUFFER', `?GL_TEXTURE_BUFFER', `?GL_TRANSFORM_FEEDBACK_BUFFER' -%% or `?GL_UNIFORM_BUFFER'. Any of these targets may be used, although the targets `?GL_COPY_READ_BUFFER' -%% and `?GL_COPY_WRITE_BUFFER' are provided specifically to allow copies between buffers -%% without disturbing other GL state. -%% -%% `Readoffset' , `Writeoffset' and `Size' must all be greater than or equal -%% to zero. Furthermore, `Readoffset' + `Size' must not exceeed the size of the -%% buffer object bound to `Readtarget' , and `Readoffset' + `Size' must not -%% exceeed the size of the buffer bound to `Writetarget' . If the same buffer object -%% is bound to both `Readtarget' and `Writetarget' , then the ranges specified by `Readoffset' -%% , `Writeoffset' and `Size' must not overlap. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCopyBufferSubData.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCopyBufferSubData.xhtml">external</a> documentation. -spec copyBufferSubData(ReadTarget, WriteTarget, ReadOffset, WriteOffset, Size) -> 'ok' when ReadTarget :: enum(),WriteTarget :: enum(),ReadOffset :: integer(),WriteOffset :: integer(),Size :: integer(). copyBufferSubData(ReadTarget,WriteTarget,ReadOffset,WriteOffset,Size) -> cast(5683, <<ReadTarget:?GLenum,WriteTarget:?GLenum,ReadOffset:?GLintptr,WriteOffset:?GLintptr,Size:?GLsizeiptr>>). @@ -14205,7 +6613,7 @@ copyBufferSubData(ReadTarget,WriteTarget,ReadOffset,WriteOffset,Size) -> %% were upconverted to 32-bit unsigned integers (with wrapping on overflow conditions). The %% operation is undefined if the sum would be negative. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawElementsBaseVertex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawElementsBaseVertex.xhtml">external</a> documentation. -spec drawElementsBaseVertex(Mode, Count, Type, Indices, Basevertex) -> 'ok' when Mode :: enum(),Count :: integer(),Type :: enum(),Indices :: offset()|mem(),Basevertex :: integer(). drawElementsBaseVertex(Mode,Count,Type,Indices,Basevertex) when is_integer(Indices) -> cast(5684, <<Mode:?GLenum,Count:?GLsizei,Type:?GLenum,Indices:?GLuint,Basevertex:?GLint>>); @@ -14227,7 +6635,7 @@ drawElementsBaseVertex(Mode,Count,Type,Indices,Basevertex) -> %% to 32-bit unsigned integers (with wrapping on overflow conditions). The operation is undefined %% if the sum would be negative. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawRangeElementsBaseVertex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawRangeElementsBaseVertex.xhtml">external</a> documentation. -spec drawRangeElementsBaseVertex(Mode, Start, End, Count, Type, Indices, Basevertex) -> 'ok' when Mode :: enum(),Start :: integer(),End :: integer(),Count :: integer(),Type :: enum(),Indices :: offset()|mem(),Basevertex :: integer(). drawRangeElementsBaseVertex(Mode,Start,End,Count,Type,Indices,Basevertex) when is_integer(Indices) -> cast(5686, <<Mode:?GLenum,Start:?GLuint,End:?GLuint,Count:?GLsizei,Type:?GLenum,Indices:?GLuint,Basevertex:?GLint>>); @@ -14244,7 +6652,7 @@ drawRangeElementsBaseVertex(Mode,Start,End,Count,Type,Indices,Basevertex) -> %% if the calculation were upconverted to 32-bit unsigned integers (with wrapping on overflow %% conditions). The operation is undefined if the sum would be negative. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawElementsInstancedBaseVertex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertex.xhtml">external</a> documentation. -spec drawElementsInstancedBaseVertex(Mode, Count, Type, Indices, Primcount, Basevertex) -> 'ok' when Mode :: enum(),Count :: integer(),Type :: enum(),Indices :: offset()|mem(),Primcount :: integer(),Basevertex :: integer(). drawElementsInstancedBaseVertex(Mode,Count,Type,Indices,Primcount,Basevertex) when is_integer(Indices) -> cast(5688, <<Mode:?GLenum,Count:?GLsizei,Type:?GLenum,Indices:?GLuint,Primcount:?GLsizei,Basevertex:?GLint>>); @@ -14259,29 +6667,7 @@ drawElementsInstancedBaseVertex(Mode,Count,Type,Indices,Primcount,Basevertex) -> %% as the `provoking vertex' and ``gl:provokingVertex'' specifies which vertex is %% to be used as the source of data for flat shaded varyings. %% -%% `ProvokeMode' must be either `?GL_FIRST_VERTEX_CONVENTION' or `?GL_LAST_VERTEX_CONVENTION' -%% , and controls the selection of the vertex whose values are assigned to flatshaded varying -%% outputs. The interpretation of these values for the supported primitive types is: <table><tbody> -%% <tr><td>` Primitive Type of Polygon '`i'</td><td>` First Vertex Convention ' -%% </td><td>` Last Vertex Convention '</td></tr><tr><td> point </td><td>`i'</td><td> -%% `i'</td></tr><tr><td> independent line </td><td> 2`i' - 1 </td><td> 2`i'</td> -%% </tr><tr><td> line loop </td><td>`i'</td><td> -%% -%% `i' + 1, if `i' < `n' -%% -%% 1, if `i' = `n'</td></tr><tr><td> line strip </td><td>`i'</td><td>`i' -%% + 1 </td></tr><tr><td> independent triangle </td><td> 3`i' - 2 </td><td> 3`i'</td> -%% </tr><tr><td> triangle strip </td><td>`i'</td><td>`i' + 2 </td></tr><tr><td> -%% triangle fan </td><td>`i' + 1 </td><td>`i' + 2 </td></tr><tr><td> line adjacency -%% </td><td> 4`i' - 2 </td><td> 4`i' - 1 </td></tr><tr><td> line strip adjacency </td> -%% <td>`i' + 1 </td><td>`i' + 2 </td></tr><tr><td> triangle adjacency </td><td> 6`i' -%% - 5 </td><td> 6`i' - 1 </td></tr><tr><td> triangle strip adjacency </td><td> 2`i' -%% - 1 </td><td> 2`i' + 3 </td></tr></tbody></table> -%% -%% If a vertex or geometry shader is active, user-defined varying outputs may be flatshaded -%% by using the flat qualifier when declaring the output. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProvokingVertex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glProvokingVertex.xhtml">external</a> documentation. -spec provokingVertex(Mode) -> 'ok' when Mode :: enum(). provokingVertex(Mode) -> cast(5690, <<Mode:?GLenum>>). @@ -14292,20 +6678,7 @@ provokingVertex(Mode) -> %% command stream and associates it with that sync object, and returns a non-zero name corresponding %% to the sync object. %% -%% When the specified `Condition' of the sync object is satisfied by the fence command, -%% the sync object is signaled by the GL, causing any {@link gl:waitSync/3} , {@link gl:clientWaitSync/3} -%% commands blocking in `Sync' to `unblock'. No other state is affected by ``gl:fenceSync'' -%% or by the execution of the associated fence command. -%% -%% `Condition' must be `?GL_SYNC_GPU_COMMANDS_COMPLETE'. This condition is satisfied -%% by completion of the fence command corresponding to the sync object and all preceding -%% commands in the same command stream. The sync object will not be signaled until all effects -%% from these commands on GL client and server state and the framebuffer are fully realized. -%% Note that completion of the fence command occurs once the state of the corresponding sync -%% object has been changed, but commands waiting on that sync object may not be unblocked -%% until after the fence command completes. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glFenceSync.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glFenceSync.xhtml">external</a> documentation. -spec fenceSync(Condition, Flags) -> integer() when Condition :: enum(),Flags :: integer(). fenceSync(Condition,Flags) -> call(5691, <<Condition:?GLenum,Flags:?GLbitfield>>). @@ -14316,7 +6689,7 @@ fenceSync(Condition,Flags) -> %% object. If `Sync' is not the name of a sync object, or if an error occurs, ``gl:isSync'' %% returns `?GL_FALSE'. Note that zero is not the name of a sync object. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsSync.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsSync.xhtml">external</a> documentation. -spec isSync(Sync) -> 0|1 when Sync :: integer(). isSync(Sync) -> call(5692, <<Sync:?GLsync>>). @@ -14331,9 +6704,7 @@ isSync(Sync) -> %% or {@link gl:clientWaitSync/3} command. In either case, after ``gl:deleteSync'' returns, %% the name `Sync' is invalid and can no longer be used to refer to the sync object. %% -%% ``gl:deleteSync'' will silently ignore a `Sync' value of zero. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteSync.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteSync.xhtml">external</a> documentation. -spec deleteSync(Sync) -> 'ok' when Sync :: integer(). deleteSync(Sync) -> cast(5693, <<Sync:?GLsync>>). @@ -14345,21 +6716,7 @@ deleteSync(Sync) -> %% is called, ``gl:clientWaitSync'' returns immediately, otherwise it will block and wait %% for up to `Timeout' nanoseconds for `Sync' to become signaled. %% -%% The return value is one of four status values: -%% -%% `?GL_ALREADY_SIGNALED' indicates that `Sync' was signaled at the time that ``gl:clientWaitSync'' -%% was called. -%% -%% `?GL_TIMEOUT_EXPIRED' indicates that at least `Timeout' nanoseconds passed and `Sync' -%% did not become signaled. -%% -%% `?GL_CONDITION_SATISFIED' indicates that `Sync' was signaled before the timeout -%% expired. -%% -%% `?GL_WAIT_FAILED' indicates that an error occurred. Additionally, an OpenGL error -%% will be generated. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClientWaitSync.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glClientWaitSync.xhtml">external</a> documentation. -spec clientWaitSync(Sync, Flags, Timeout) -> enum() when Sync :: integer(),Flags :: integer(),Timeout :: integer(). clientWaitSync(Sync,Flags,Timeout) -> call(5694, <<Sync:?GLsync,Flags:?GLbitfield,0:32,Timeout:?GLuint64>>). @@ -14373,15 +6730,9 @@ clientWaitSync(Sync,Flags,Timeout) -> %% %% `Flags' and `Timeout' are placeholders for anticipated future extensions of %% sync object capabilities. They must have these reserved values in order that existing -%% code calling ``gl:waitSync'' operate properly in the presence of such extensions.. ``gl:waitSync'' -%% will always wait no longer than an implementation-dependent timeout. The duration of -%% this timeout in nanoseconds may be queried by calling {@link gl:getBooleanv/1} with the parameter `?GL_MAX_SERVER_WAIT_TIMEOUT' -%% . There is currently no way to determine whether ``gl:waitSync'' unblocked because the -%% timeout expired or because the sync object being waited on was signaled. -%% -%% If an error occurs, ``gl:waitSync'' does not cause the GL server to block. +%% code calling ``gl:waitSync'' operate properly in the presence of such extensions. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glWaitSync.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glWaitSync.xhtml">external</a> documentation. -spec waitSync(Sync, Flags, Timeout) -> 'ok' when Sync :: integer(),Flags :: integer(),Timeout :: integer(). waitSync(Sync,Flags,Timeout) -> cast(5695, <<Sync:?GLsync,Flags:?GLbitfield,0:32,Timeout:?GLuint64>>). @@ -14397,32 +6748,7 @@ getInteger64v(Pname) -> %% ``gl:getSynciv'' retrieves properties of a sync object. `Sync' specifies the name %% of the sync object whose properties to retrieve. %% -%% On success, ``gl:getSynciv'' replaces up to `BufSize' integers in `Values' -%% with the corresponding property values of the object being queried. The actual number -%% of integers replaced is returned in the variable whose address is specified in `Length' -%% . If `Length' is NULL, no length is returned. -%% -%% If `Pname' is `?GL_OBJECT_TYPE', a single value representing the specific type -%% of the sync object is placed in `Values' . The only type supported is `?GL_SYNC_FENCE' -%% . -%% -%% If `Pname' is `?GL_SYNC_STATUS', a single value representing the status of -%% the sync object (`?GL_SIGNALED' or `?GL_UNSIGNALED') is placed in `Values' . -%% -%% -%% If `Pname' is `?GL_SYNC_CONDITION', a single value representing the condition -%% of the sync object is placed in `Values' . The only condition supported is `?GL_SYNC_GPU_COMMANDS_COMPLETE' -%% . -%% -%% If `Pname' is `?GL_SYNC_FLAGS', a single value representing the flags with -%% which the sync object was created is placed in `Values' . No flags are currently supported -%% -%% -%% `Flags' is expected to be used in future extensions to the sync objects.. -%% -%% If an error occurs, nothing will be written to `Values' or `Length' . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetSync.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetSync.xhtml">external</a> documentation. -spec getSynciv(Sync, Pname, BufSize) -> [integer()] when Sync :: integer(),Pname :: enum(),BufSize :: integer(). getSynciv(Sync,Pname,BufSize) -> call(5697, <<Sync:?GLsync,Pname:?GLenum,BufSize:?GLsizei>>). @@ -14432,25 +6758,7 @@ getSynciv(Sync,Pname,BufSize) -> %% ``gl:texImage2DMultisample'' establishes the data storage, format, dimensions and number %% of samples of a multisample texture's image. %% -%% `Target' must be `?GL_TEXTURE_2D_MULTISAMPLE' or `?GL_PROXY_TEXTURE_2D_MULTISAMPLE' -%% . `Width' and `Height' are the dimensions in texels of the texture, and must -%% be in the range zero to `?GL_MAX_TEXTURE_SIZE' - 1. `Samples' specifies the -%% number of samples in the image and must be in the range zero to `?GL_MAX_SAMPLES' -%% - 1. -%% -%% `Internalformat' must be a color-renderable, depth-renderable, or stencil-renderable -%% format. -%% -%% If `Fixedsamplelocations' is `?GL_TRUE', the image will use identical sample -%% locations and the same number of samples for all texels in the image, and the sample locations -%% will not depend on the internal format or size of the image. -%% -%% When a multisample texture is accessed in a shader, the access takes one vector of integers -%% describing which texel to fetch and an integer corresponding to the sample numbers describing -%% which sample within the texel to fetch. No standard sampling instructions are allowed -%% on the multisample texture targets. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2DMultisample.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexImage2DMultisample.xhtml">external</a> documentation. -spec texImage2DMultisample(Target, Samples, Internalformat, Width, Height, Fixedsamplelocations) -> 'ok' when Target :: enum(),Samples :: integer(),Internalformat :: integer(),Width :: integer(),Height :: integer(),Fixedsamplelocations :: 0|1. texImage2DMultisample(Target,Samples,Internalformat,Width,Height,Fixedsamplelocations) -> cast(5698, <<Target:?GLenum,Samples:?GLsizei,Internalformat:?GLint,Width:?GLsizei,Height:?GLsizei,Fixedsamplelocations:?GLboolean>>). @@ -14460,25 +6768,7 @@ texImage2DMultisample(Target,Samples,Internalformat,Width,Height,Fixedsampleloca %% ``gl:texImage3DMultisample'' establishes the data storage, format, dimensions and number %% of samples of a multisample texture's image. %% -%% `Target' must be `?GL_TEXTURE_2D_MULTISAMPLE_ARRAY' or `?GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY' -%% . `Width' and `Height' are the dimensions in texels of the texture, and must -%% be in the range zero to `?GL_MAX_TEXTURE_SIZE' - 1. `Depth' is the number of -%% array slices in the array texture's image. `Samples' specifies the number of samples -%% in the image and must be in the range zero to `?GL_MAX_SAMPLES' - 1. -%% -%% `Internalformat' must be a color-renderable, depth-renderable, or stencil-renderable -%% format. -%% -%% If `Fixedsamplelocations' is `?GL_TRUE', the image will use identical sample -%% locations and the same number of samples for all texels in the image, and the sample locations -%% will not depend on the internal format or size of the image. -%% -%% When a multisample texture is accessed in a shader, the access takes one vector of integers -%% describing which texel to fetch and an integer corresponding to the sample numbers describing -%% which sample within the texel to fetch. No standard sampling instructions are allowed -%% on the multisample texture targets. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexImage3DMultisample.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexImage3DMultisample.xhtml">external</a> documentation. -spec texImage3DMultisample(Target, Samples, Internalformat, Width, Height, Depth, Fixedsamplelocations) -> 'ok' when Target :: enum(),Samples :: integer(),Internalformat :: integer(),Width :: integer(),Height :: integer(),Depth :: integer(),Fixedsamplelocations :: 0|1. texImage3DMultisample(Target,Samples,Internalformat,Width,Height,Depth,Fixedsamplelocations) -> cast(5699, <<Target:?GLenum,Samples:?GLsizei,Internalformat:?GLint,Width:?GLsizei,Height:?GLsizei,Depth:?GLsizei,Fixedsamplelocations:?GLboolean>>). @@ -14493,10 +6783,7 @@ texImage3DMultisample(Target,Samples,Internalformat,Width,Height,Depth,Fixedsamp %% space of that sample. (0.5, 0.5) this corresponds to the pixel center. `Index' must %% be between zero and the value of `?GL_SAMPLES' - 1. %% -%% If the multisample mode does not have fixed sample locations, the returned values may -%% only reflect the locations of samples within some pixels. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetMultisample.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetMultisample.xhtml">external</a> documentation. -spec getMultisamplefv(Pname, Index) -> {float(),float()} when Pname :: enum(),Index :: integer(). getMultisamplefv(Pname,Index) -> call(5700, <<Pname:?GLenum,Index:?GLuint>>). @@ -14506,19 +6793,14 @@ getMultisamplefv(Pname,Index) -> %% ``gl:sampleMaski'' sets one 32-bit sub-word of the multi-word sample mask, `?GL_SAMPLE_MASK_VALUE' %% . %% -%% `MaskIndex' specifies which 32-bit sub-word of the sample mask to update, and `Mask' -%% specifies the new value to use for that sub-word. `MaskIndex' must be less than -%% the value of `?GL_MAX_SAMPLE_MASK_WORDS'. Bit `B' of mask word `M' corresponds -%% to sample 32 x `M' + `B'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glSampleMaski.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glSampleMaski.xhtml">external</a> documentation. -spec sampleMaski(Index, Mask) -> 'ok' when Index :: integer(),Mask :: integer(). sampleMaski(Index,Mask) -> cast(5701, <<Index:?GLuint,Mask:?GLbitfield>>). %% @doc glNamedStringARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glNamedStringARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec namedStringARB(Type, Name, String) -> 'ok' when Type :: enum(),Name :: string(),String :: string(). namedStringARB(Type,Name,String) -> NameLen = length(Name), @@ -14527,7 +6809,7 @@ namedStringARB(Type,Name,String) -> %% @doc glDeleteNamedStringARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteNamedStringARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec deleteNamedStringARB(Name) -> 'ok' when Name :: string(). deleteNamedStringARB(Name) -> NameLen = length(Name), @@ -14535,7 +6817,7 @@ deleteNamedStringARB(Name) -> %% @doc glCompileShaderIncludeARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCompileShaderIncludeARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec compileShaderIncludeARB(Shader, Path) -> 'ok' when Shader :: integer(),Path :: iolist(). compileShaderIncludeARB(Shader,Path) -> PathTemp = list_to_binary([[Str|[0]] || Str <- Path ]), @@ -14544,7 +6826,7 @@ compileShaderIncludeARB(Shader,Path) -> %% @doc glIsNamedStringARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsNamedStringARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec isNamedStringARB(Name) -> 0|1 when Name :: string(). isNamedStringARB(Name) -> NameLen = length(Name), @@ -14552,7 +6834,7 @@ isNamedStringARB(Name) -> %% @doc glGetNamedStringARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetNamedStringARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getNamedStringARB(Name, BufSize) -> string() when Name :: string(),BufSize :: integer(). getNamedStringARB(Name,BufSize) -> NameLen = length(Name), @@ -14560,7 +6842,7 @@ getNamedStringARB(Name,BufSize) -> %% @doc glGetNamedStringARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetNamedStringARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getNamedStringivARB(Name, Pname) -> integer() when Name :: string(),Pname :: enum(). getNamedStringivARB(Name,Pname) -> NameLen = length(Name), @@ -14568,7 +6850,7 @@ getNamedStringivARB(Name,Pname) -> %% @doc glBindFragDataLocationIndexe %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindFragDataLocationIndexe.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec bindFragDataLocationIndexed(Program, ColorNumber, Index, Name) -> 'ok' when Program :: integer(),ColorNumber :: integer(),Index :: integer(),Name :: string(). bindFragDataLocationIndexed(Program,ColorNumber,Index,Name) -> NameLen = length(Name), @@ -14580,7 +6862,7 @@ bindFragDataLocationIndexed(Program,ColorNumber,Index,Name) -> %% was bound when the program object `Program' was last linked. If `Name' is not %% a varying out variable of `Program' , or if an error occurs, -1 will be returned. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetFragDataIndex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetFragDataIndex.xhtml">external</a> documentation. -spec getFragDataIndex(Program, Name) -> integer() when Program :: integer(),Name :: string(). getFragDataIndex(Program,Name) -> NameLen = length(Name), @@ -14593,13 +6875,7 @@ getFragDataIndex(Program,Name) -> %% that none of the returned names was in use immediately before the call to ``gl:genSamplers'' %% . %% -%% Sampler object names returned by a call to ``gl:genSamplers'' are not returned by subsequent -%% calls, unless they are first deleted with {@link gl:deleteSamplers/1} . -%% -%% The names returned in `Samplers' are marked as used, for the purposes of ``gl:genSamplers'' -%% only, but they acquire state and type only when they are first bound. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenSamplers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenSamplers.xhtml">external</a> documentation. -spec genSamplers(Count) -> [integer()] when Count :: integer(). genSamplers(Count) -> call(5710, <<Count:?GLsizei>>). @@ -14612,7 +6888,7 @@ genSamplers(Count) -> %% is called with unit set to the unit the sampler is bound to and sampler zero. Unused %% names in samplers are silently ignored, as is the reserved name zero. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteSamplers.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteSamplers.xhtml">external</a> documentation. -spec deleteSamplers(Samplers) -> 'ok' when Samplers :: [integer()]. deleteSamplers(Samplers) -> SamplersLen = length(Samplers), @@ -14625,9 +6901,7 @@ deleteSamplers(Samplers) -> %% object. If `Id' is zero, or is a non-zero value that is not currently the name of %% a sampler object, or if an error occurs, ``gl:isSampler'' returns `?GL_FALSE'. %% -%% A name returned by {@link gl:genSamplers/1} , is the name of a sampler object. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsSampler.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsSampler.xhtml">external</a> documentation. -spec isSampler(Sampler) -> 0|1 when Sampler :: integer(). isSampler(Sampler) -> call(5712, <<Sampler:?GLuint>>). @@ -14639,12 +6913,7 @@ isSampler(Sampler) -> %% . `Unit' must be less than the value of `?GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS'. %% %% -%% When a sampler object is bound to a texture unit, its state supersedes that of the texture -%% object bound to that texture unit. If the sampler name zero is bound to a texture unit, -%% the currently bound texture's sampler state becomes active. A single sampler object may -%% be bound to multiple texture units simultaneously. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindSampler.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindSampler.xhtml">external</a> documentation. -spec bindSampler(Unit, Sampler) -> 'ok' when Unit :: integer(),Sampler :: integer(). bindSampler(Unit,Sampler) -> cast(5713, <<Unit:?GLuint,Sampler:?GLuint>>). @@ -14656,141 +6925,7 @@ bindSampler(Unit,Sampler) -> %% modified, and must be the name of a sampler object previously returned from a call to {@link gl:genSamplers/1} %% . The following symbols are accepted in `Pname' : %% -%% `?GL_TEXTURE_MIN_FILTER': The texture minifying function is used whenever the pixel -%% being textured maps to an area greater than one texture element. There are six defined -%% minifying functions. Two of them use the nearest one or nearest four texture elements -%% to compute the texture value. The other four use mipmaps. -%% -%% A mipmap is an ordered set of arrays representing the same image at progressively lower -%% resolutions. If the texture has dimensions 2 n×2 m, there are max(n m)+1 mipmaps. The first -%% mipmap is the original texture, with dimensions 2 n×2 m. Each subsequent mipmap has -%% dimensions 2(k-1)×2(l-1), where 2 k×2 l are the dimensions of the previous mipmap, until either -%% k=0 or l=0. At that point, subsequent mipmaps have dimension 1×2(l-1) or 2(k-1)×1 until -%% the final mipmap, which has dimension 1×1. To define the mipmaps, call {@link gl:texImage1D/8} -%% , {@link gl:texImage2D/9} , {@link gl:texImage3D/10} , {@link gl:copyTexImage1D/7} , or {@link gl:copyTexImage2D/8} -%% with the `level' argument indicating the order of the mipmaps. Level 0 is the original -%% texture; level max(n m) is the final 1×1 mipmap. -%% -%% `Params' supplies a function for minifying the texture as one of the following: -%% -%% `?GL_NEAREST': Returns the value of the texture element that is nearest (in Manhattan -%% distance) to the center of the pixel being textured. -%% -%% `?GL_LINEAR': Returns the weighted average of the four texture elements that are -%% closest to the center of the pixel being textured. These can include border texture elements, -%% depending on the values of `?GL_TEXTURE_WRAP_S' and `?GL_TEXTURE_WRAP_T', and -%% on the exact mapping. -%% -%% `?GL_NEAREST_MIPMAP_NEAREST': Chooses the mipmap that most closely matches the size -%% of the pixel being textured and uses the `?GL_NEAREST' criterion (the texture element -%% nearest to the center of the pixel) to produce a texture value. -%% -%% `?GL_LINEAR_MIPMAP_NEAREST': Chooses the mipmap that most closely matches the size -%% of the pixel being textured and uses the `?GL_LINEAR' criterion (a weighted average -%% of the four texture elements that are closest to the center of the pixel) to produce a -%% texture value. -%% -%% `?GL_NEAREST_MIPMAP_LINEAR': Chooses the two mipmaps that most closely match the -%% size of the pixel being textured and uses the `?GL_NEAREST' criterion (the texture -%% element nearest to the center of the pixel) to produce a texture value from each mipmap. -%% The final texture value is a weighted average of those two values. -%% -%% `?GL_LINEAR_MIPMAP_LINEAR': Chooses the two mipmaps that most closely match the -%% size of the pixel being textured and uses the `?GL_LINEAR' criterion (a weighted -%% average of the four texture elements that are closest to the center of the pixel) to produce -%% a texture value from each mipmap. The final texture value is a weighted average of those -%% two values. -%% -%% As more texture elements are sampled in the minification process, fewer aliasing artifacts -%% will be apparent. While the `?GL_NEAREST' and `?GL_LINEAR' minification functions -%% can be faster than the other four, they sample only one or four texture elements to determine -%% the texture value of the pixel being rendered and can produce moire patterns or ragged -%% transitions. The initial value of `?GL_TEXTURE_MIN_FILTER' is `?GL_NEAREST_MIPMAP_LINEAR' -%% . -%% -%% `?GL_TEXTURE_MAG_FILTER': The texture magnification function is used when the pixel -%% being textured maps to an area less than or equal to one texture element. It sets the -%% texture magnification function to either `?GL_NEAREST' or `?GL_LINEAR' (see -%% below). `?GL_NEAREST' is generally faster than `?GL_LINEAR', but it can produce -%% textured images with sharper edges because the transition between texture elements is -%% not as smooth. The initial value of `?GL_TEXTURE_MAG_FILTER' is `?GL_LINEAR'. -%% -%% `?GL_NEAREST': Returns the value of the texture element that is nearest (in Manhattan -%% distance) to the center of the pixel being textured. -%% -%% `?GL_LINEAR': Returns the weighted average of the four texture elements that are -%% closest to the center of the pixel being textured. These can include border texture elements, -%% depending on the values of `?GL_TEXTURE_WRAP_S' and `?GL_TEXTURE_WRAP_T', and -%% on the exact mapping. -%% -%% -%% -%% `?GL_TEXTURE_MIN_LOD': Sets the minimum level-of-detail parameter. This floating-point -%% value limits the selection of highest resolution mipmap (lowest mipmap level). The initial -%% value is -1000. -%% -%% -%% -%% `?GL_TEXTURE_MAX_LOD': Sets the maximum level-of-detail parameter. This floating-point -%% value limits the selection of the lowest resolution mipmap (highest mipmap level). The -%% initial value is 1000. -%% -%% -%% -%% `?GL_TEXTURE_WRAP_S': Sets the wrap parameter for texture coordinate s to either `?GL_CLAMP_TO_EDGE' -%% , `?GL_MIRRORED_REPEAT', or `?GL_REPEAT'. `?GL_CLAMP_TO_BORDER' causes -%% the s coordinate to be clamped to the range [(-1 2/N) 1+(1 2/N)], where N is the size of the texture in -%% the direction of clamping.`?GL_CLAMP_TO_EDGE' causes s coordinates to be clamped -%% to the range [(1 2/N) 1-(1 2/N)], where N is the size of the texture in the direction of clamping. `?GL_REPEAT' -%% causes the integer part of the s coordinate to be ignored; the GL uses only the fractional -%% part, thereby creating a repeating pattern. `?GL_MIRRORED_REPEAT' causes the s -%% coordinate to be set to the fractional part of the texture coordinate if the integer part -%% of s is even; if the integer part of s is odd, then the s texture coordinate is -%% set to 1-frac(s), where frac(s) represents the fractional part of s. Initially, `?GL_TEXTURE_WRAP_S' -%% is set to `?GL_REPEAT'. -%% -%% -%% -%% `?GL_TEXTURE_WRAP_T': Sets the wrap parameter for texture coordinate t to either `?GL_CLAMP_TO_EDGE' -%% , `?GL_MIRRORED_REPEAT', or `?GL_REPEAT'. See the discussion under `?GL_TEXTURE_WRAP_S' -%% . Initially, `?GL_TEXTURE_WRAP_T' is set to `?GL_REPEAT'. -%% -%% `?GL_TEXTURE_WRAP_R': Sets the wrap parameter for texture coordinate r to either `?GL_CLAMP_TO_EDGE' -%% , `?GL_MIRRORED_REPEAT', or `?GL_REPEAT'. See the discussion under `?GL_TEXTURE_WRAP_S' -%% . Initially, `?GL_TEXTURE_WRAP_R' is set to `?GL_REPEAT'. -%% -%% `?GL_TEXTURE_BORDER_COLOR': The data in `Params' specifies four values that -%% define the border values that should be used for border texels. If a texel is sampled -%% from the border of the texture, the values of `?GL_TEXTURE_BORDER_COLOR' are interpreted -%% as an RGBA color to match the texture's internal format and substituted for the non-existent -%% texel data. If the texture contains depth components, the first component of `?GL_TEXTURE_BORDER_COLOR' -%% is interpreted as a depth value. The initial value is (0.0, 0.0, 0.0, 0.0). -%% -%% `?GL_TEXTURE_COMPARE_MODE': Specifies the texture comparison mode for currently -%% bound textures. That is, a texture whose internal format is `?GL_DEPTH_COMPONENT_*'; -%% see {@link gl:texImage2D/9} ) Permissible values are: -%% -%% `?GL_COMPARE_REF_TO_TEXTURE': Specifies that the interpolated and clamped r texture -%% coordinate should be compared to the value in the currently bound texture. See the discussion -%% of `?GL_TEXTURE_COMPARE_FUNC' for details of how the comparison is evaluated. The -%% result of the comparison is assigned to the red channel. -%% -%% `?GL_NONE': Specifies that the red channel should be assigned the appropriate value -%% from the currently bound texture. -%% -%% `?GL_TEXTURE_COMPARE_FUNC': Specifies the comparison operator used when `?GL_TEXTURE_COMPARE_MODE' -%% is set to `?GL_COMPARE_REF_TO_TEXTURE'. Permissible values are: <table><tbody><tr><td> -%% ` Texture Comparison Function '</td><td>` Computed result '</td></tr></tbody><tbody> -%% <tr><td>`?GL_LEQUAL'</td><td> result={1.0 0.0 r<=(D t) r>(D t))</td></tr><tr><td>`?GL_GEQUAL'</td><td> -%% result={1.0 0.0 r>=(D t) r<(D t))</td></tr><tr><td>`?GL_LESS'</td><td> result={1.0 0.0 r<(D t) r>=(D t))</td></tr><tr><td>`?GL_GREATER' -%% </td><td> result={1.0 0.0 r>(D t) r<=(D t))</td></tr><tr><td>`?GL_EQUAL'</td><td> result={1.0 0.0 r=(D t) r&ne; -%% (D t))</td></tr><tr><td>`?GL_NOTEQUAL' -%% </td><td> result={1.0 0.0 r&ne;(D t) r=(D t))</td></tr><tr><td>`?GL_ALWAYS'</td><td> result=1.0</td></tr><tr><td> -%% `?GL_NEVER'</td><td> result=0.0</td></tr></tbody></table> where r is the current -%% interpolated texture coordinate, and D t is the texture value sampled from the currently -%% bound texture. result is assigned to R t. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glSamplerParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glSamplerParameter.xhtml">external</a> documentation. -spec samplerParameteri(Sampler, Pname, Param) -> 'ok' when Sampler :: integer(),Pname :: enum(),Param :: integer(). samplerParameteri(Sampler,Pname,Param) -> cast(5714, <<Sampler:?GLuint,Pname:?GLenum,Param:?GLint>>). @@ -14827,7 +6962,7 @@ samplerParameterIiv(Sampler,Pname,Param) -> %% @doc glSamplerParameterI %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glSamplerParameterI.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec samplerParameterIuiv(Sampler, Pname, Param) -> 'ok' when Sampler :: integer(),Pname :: enum(),Param :: [integer()]. samplerParameterIuiv(Sampler,Pname,Param) -> ParamLen = length(Param), @@ -14842,41 +6977,7 @@ samplerParameterIuiv(Sampler,Pname,Param) -> %% . `Pname' accepts the same symbols as {@link gl:samplerParameteri/3} , with the same %% interpretations: %% -%% `?GL_TEXTURE_MAG_FILTER': Returns the single-valued texture magnification filter, -%% a symbolic constant. The initial value is `?GL_LINEAR'. -%% -%% `?GL_TEXTURE_MIN_FILTER': Returns the single-valued texture minification filter, -%% a symbolic constant. The initial value is `?GL_NEAREST_MIPMAP_LINEAR'. -%% -%% `?GL_TEXTURE_MIN_LOD': Returns the single-valued texture minimum level-of-detail -%% value. The initial value is -1000. -%% -%% `?GL_TEXTURE_MAX_LOD': Returns the single-valued texture maximum level-of-detail -%% value. The initial value is 1000. -%% -%% `?GL_TEXTURE_WRAP_S': Returns the single-valued wrapping function for texture coordinate -%% s, a symbolic constant. The initial value is `?GL_REPEAT'. -%% -%% `?GL_TEXTURE_WRAP_T': Returns the single-valued wrapping function for texture coordinate -%% t, a symbolic constant. The initial value is `?GL_REPEAT'. -%% -%% `?GL_TEXTURE_WRAP_R': Returns the single-valued wrapping function for texture coordinate -%% r, a symbolic constant. The initial value is `?GL_REPEAT'. -%% -%% `?GL_TEXTURE_BORDER_COLOR': Returns four integer or floating-point numbers that -%% comprise the RGBA color of the texture border. Floating-point values are returned in the -%% range [0 1]. Integer values are returned as a linear mapping of the internal floating-point -%% representation such that 1.0 maps to the most positive representable integer and -1.0 -%% maps to the most negative representable integer. The initial value is (0, 0, 0, 0). -%% -%% `?GL_TEXTURE_COMPARE_MODE': Returns a single-valued texture comparison mode, a symbolic -%% constant. The initial value is `?GL_NONE'. See {@link gl:samplerParameteri/3} . -%% -%% `?GL_TEXTURE_COMPARE_FUNC': Returns a single-valued texture comparison function, -%% a symbolic constant. The initial value is `?GL_LEQUAL'. See {@link gl:samplerParameteri/3} -%% . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetSamplerParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetSamplerParameter.xhtml">external</a> documentation. -spec getSamplerParameteriv(Sampler, Pname) -> [integer()] when Sampler :: integer(),Pname :: enum(). getSamplerParameteriv(Sampler,Pname) -> call(5720, <<Sampler:?GLuint,Pname:?GLenum>>). @@ -14895,7 +6996,7 @@ getSamplerParameterfv(Sampler,Pname) -> %% @doc glGetSamplerParameterI %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetSamplerParameterI.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getSamplerParameterIuiv(Sampler, Pname) -> [integer()] when Sampler :: integer(),Pname :: enum(). getSamplerParameterIuiv(Sampler,Pname) -> call(5723, <<Sampler:?GLuint,Pname:?GLenum>>). @@ -14910,21 +7011,21 @@ getSamplerParameterIuiv(Sampler,Pname) -> %% block where the target is `?GL_TIME_ELAPSED' and it does not affect the result of %% that query object. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glQueryCounter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glQueryCounter.xhtml">external</a> documentation. -spec queryCounter(Id, Target) -> 'ok' when Id :: integer(),Target :: enum(). queryCounter(Id,Target) -> cast(5724, <<Id:?GLuint,Target:?GLenum>>). %% @doc glGetQueryObjecti64v %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetQueryObjecti64v.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getQueryObjecti64v(Id, Pname) -> integer() when Id :: integer(),Pname :: enum(). getQueryObjecti64v(Id,Pname) -> call(5725, <<Id:?GLuint,Pname:?GLenum>>). %% @doc glGetQueryObjectui64v %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetQueryObjectui64v.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getQueryObjectui64v(Id, Pname) -> integer() when Id :: integer(),Pname :: enum(). getQueryObjectui64v(Id,Pname) -> call(5726, <<Id:?GLuint,Pname:?GLenum>>). @@ -14936,25 +7037,7 @@ getQueryObjectui64v(Id,Pname) -> %% , execept that the parameters to {@link gl:drawArraysInstancedBaseInstance/5} are stored %% in memory at the address given by `Indirect' . %% -%% The parameters addressed by `Indirect' are packed into a structure that takes the -%% form (in C): typedef struct { uint count; uint primCount; uint first; uint baseInstance; -%% } DrawArraysIndirectCommand; const DrawArraysIndirectCommand *cmd = (const DrawArraysIndirectCommand -%% *)indirect; glDrawArraysInstancedBaseInstance(mode, cmd->first, cmd->count, cmd->primCount, -%% cmd->baseInstance); -%% -%% If a buffer is bound to the `?GL_DRAW_INDIRECT_BUFFER' binding at the time of a -%% call to ``gl:drawArraysIndirect'', `Indirect' is interpreted as an offset, in basic -%% machine units, into that buffer and the parameter data is read from the buffer rather -%% than from client memory. -%% -%% In contrast to {@link gl:drawArraysInstancedBaseInstance/5} , the first member of the parameter -%% structure is unsigned, and out-of-range indices do not generate an error. -%% -%% Vertex attributes that are modified by ``gl:drawArraysIndirect'' have an unspecified -%% value after ``gl:drawArraysIndirect'' returns. Attributes that aren't modified remain -%% well defined. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawArraysIndirect.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawArraysIndirect.xhtml">external</a> documentation. -spec drawArraysIndirect(Mode, Indirect) -> 'ok' when Mode :: enum(),Indirect :: offset()|mem(). drawArraysIndirect(Mode,Indirect) when is_integer(Indirect) -> cast(5727, <<Mode:?GLenum,Indirect:?GLuint>>); @@ -14969,32 +7052,7 @@ drawArraysIndirect(Mode,Indirect) -> %% , execpt that the parameters to {@link gl:drawElementsInstancedBaseVertexBaseInstance/7} %% are stored in memory at the address given by `Indirect' . %% -%% The parameters addressed by `Indirect' are packed into a structure that takes the -%% form (in C): typedef struct { uint count; uint primCount; uint firstIndex; uint baseVertex; -%% uint baseInstance; } DrawElementsIndirectCommand; -%% -%% ``gl:drawElementsIndirect'' is equivalent to: void glDrawElementsIndirect(GLenum mode, -%% GLenum type, const void * indirect) { const DrawElementsIndirectCommand *cmd = (const -%% DrawElementsIndirectCommand *)indirect; glDrawElementsInstancedBaseVertexBaseInstance(mode, -%% cmd->count, type, cmd->firstIndex + size-of-type, cmd->primCount, cmd->baseVertex, -%% cmd->baseInstance); } -%% -%% If a buffer is bound to the `?GL_DRAW_INDIRECT_BUFFER' binding at the time of a -%% call to ``gl:drawElementsIndirect'', `Indirect' is interpreted as an offset, in -%% basic machine units, into that buffer and the parameter data is read from the buffer rather -%% than from client memory. -%% -%% Note that indices stored in client memory are not supported. If no buffer is bound to -%% the `?GL_ELEMENT_ARRAY_BUFFER' binding, an error will be generated. -%% -%% The results of the operation are undefined if the reservedMustBeZero member of the parameter -%% structure is non-zero. However, no error is generated in this case. -%% -%% Vertex attributes that are modified by ``gl:drawElementsIndirect'' have an unspecified -%% value after ``gl:drawElementsIndirect'' returns. Attributes that aren't modified remain -%% well defined. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawElementsIndirect.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawElementsIndirect.xhtml">external</a> documentation. -spec drawElementsIndirect(Mode, Type, Indirect) -> 'ok' when Mode :: enum(),Type :: enum(),Indirect :: offset()|mem(). drawElementsIndirect(Mode,Type,Indirect) when is_integer(Indirect) -> cast(5729, <<Mode:?GLenum,Type:?GLenum,Indirect:?GLuint>>); @@ -15142,15 +7200,7 @@ getUniformdv(Program,Location) -> %% `Name' in the shader stage of type `Shadertype' attached to `Program' , %% with behavior otherwise identical to {@link gl:getUniformLocation/2} . %% -%% If `Name' is not the name of a subroutine uniform in the shader stage, -1 is returned, -%% but no error is generated. If `Name' is the name of a subroutine uniform in the shader -%% stage, a value between zero and the value of `?GL_ACTIVE_SUBROUTINE_LOCATIONS' minus -%% one will be returned. Subroutine locations are assigned using consecutive integers in -%% the range from zero to the value of `?GL_ACTIVE_SUBROUTINE_LOCATIONS' minus one for -%% the shader stage. For active subroutine uniforms declared as arrays, the declared array -%% elements are assigned consecutive locations. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetSubroutineUniformLocation.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetSubroutineUniformLocation.xhtml">external</a> documentation. -spec getSubroutineUniformLocation(Program, Shadertype, Name) -> integer() when Program :: integer(),Shadertype :: enum(),Name :: string(). getSubroutineUniformLocation(Program,Shadertype,Name) -> NameLen = length(Name), @@ -15164,14 +7214,7 @@ getSubroutineUniformLocation(Program,Shadertype,Name) -> %% shader subroutine index. `Name' contains the null-terminated name of the subroutine %% uniform whose name to query. %% -%% If `Name' is not the name of a subroutine uniform in the shader stage, `?GL_INVALID_INDEX' -%% is returned, but no error is generated. If `Name' is the name of a subroutine uniform -%% in the shader stage, a value between zero and the value of `?GL_ACTIVE_SUBROUTINES' -%% minus one will be returned. Subroutine indices are assigned using consecutive integers -%% in the range from zero to the value of `?GL_ACTIVE_SUBROUTINES' minus one for the -%% shader stage. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetSubroutineIndex.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetSubroutineIndex.xhtml">external</a> documentation. -spec getSubroutineIndex(Program, Shadertype, Name) -> integer() when Program :: integer(),Shadertype :: enum(),Name :: string(). getSubroutineIndex(Program,Shadertype,Name) -> NameLen = length(Name), @@ -15185,15 +7228,7 @@ getSubroutineIndex(Program,Shadertype,Name) -> %% `Index' must be between zero and the value of `?GL_ACTIVE_SUBROUTINE_UNIFORMS' %% minus one for the shader stage. %% -%% The uniform name is returned as a null-terminated string in `Name' . The actual number -%% of characters written into `Name' , excluding the null terminator is returned in `Length' -%% . If `Length' is `?NULL', no length is returned. The maximum number of characters -%% that may be written into `Name' , including the null terminator, is specified by `Bufsize' -%% . The length of the longest subroutine uniform name in `Program' and `Shadertype' -%% is given by the value of `?GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH', which can be -%% queried with {@link gl:getProgramStageiv/3} . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveSubroutineUniformName.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformName.xhtml">external</a> documentation. -spec getActiveSubroutineUniformName(Program, Shadertype, Index, Bufsize) -> string() when Program :: integer(),Shadertype :: enum(),Index :: integer(),Bufsize :: integer(). getActiveSubroutineUniformName(Program,Shadertype,Index,Bufsize) -> call(5751, <<Program:?GLuint,Shadertype:?GLenum,Index:?GLuint,Bufsize:?GLsizei>>). @@ -15205,13 +7240,7 @@ getActiveSubroutineUniformName(Program,Shadertype,Index,Bufsize) -> %% shader subroutine uniform within the shader stage given by `Stage' , and must between %% zero and the value of `?GL_ACTIVE_SUBROUTINES' minus one for the shader stage. %% -%% The name of the selected subroutine is returned as a null-terminated string in `Name' -%% . The actual number of characters written into `Name' , not including the null-terminator, -%% is is returned in `Length' . If `Length' is `?NULL', no length is returned. -%% The maximum number of characters that may be written into `Name' , including the null-terminator, -%% is given in `Bufsize' . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetActiveSubroutineName.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveSubroutineName.xhtml">external</a> documentation. -spec getActiveSubroutineName(Program, Shadertype, Index, Bufsize) -> string() when Program :: integer(),Shadertype :: enum(),Index :: integer(),Bufsize :: integer(). getActiveSubroutineName(Program,Shadertype,Index,Bufsize) -> call(5752, <<Program:?GLuint,Shadertype:?GLenum,Index:?GLuint,Bufsize:?GLsizei>>). @@ -15225,7 +7254,7 @@ getActiveSubroutineName(Program,Shadertype,Index,Bufsize) -> %% values in `Indices' must be less than the value of `?GL_ACTIVE_SUBROUTINES' %% for the shader stage. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glUniformSubroutines.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glUniformSubroutines.xhtml">external</a> documentation. -spec uniformSubroutinesuiv(Shadertype, Indices) -> 'ok' when Shadertype :: enum(),Indices :: [integer()]. uniformSubroutinesuiv(Shadertype,Indices) -> IndicesLen = length(Indices), @@ -15240,7 +7269,7 @@ uniformSubroutinesuiv(Shadertype,Indices) -> %% in use at shader stage `Shadertype' . The value of the subroutine uniform is returned %% in `Values' . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetUniformSubroutine.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetUniformSubroutine.xhtml">external</a> documentation. -spec getUniformSubroutineuiv(Shadertype, Location) -> {integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer(),integer()} when Shadertype :: enum(),Location :: integer(). getUniformSubroutineuiv(Shadertype,Location) -> call(5754, <<Shadertype:?GLenum,Location:?GLint>>). @@ -15253,26 +7282,7 @@ getUniformSubroutineuiv(Shadertype,Location) -> %% should be queried. The value or values of the parameter to be queried is returned in the %% variable whose address is given in `Values' . %% -%% If `Pname' is `?GL_ACTIVE_SUBROUTINE_UNIFORMS', the number of active subroutine -%% variables in the stage is returned in `Values' . -%% -%% If `Pname' is `?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS', the number of active -%% subroutine variable locations in the stage is returned in `Values' . -%% -%% If `Pname' is `?GL_ACTIVE_SUBROUTINES', the number of active subroutines in -%% the stage is returned in `Values' . -%% -%% If `Pname' is `?GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH', the length of the -%% longest subroutine uniform for the stage is returned in `Values' . -%% -%% If `Pname' is `?GL_ACTIVE_SUBROUTINE_MAX_LENGTH', the length of the longest -%% subroutine name for the stage is returned in `Values' . The returned name length includes -%% space for the null-terminator. -%% -%% If there is no shader present of type `Shadertype' , the returned value will be consistent -%% with a shader containing no subroutines or subroutine uniforms. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramStage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetProgramStage.xhtml">external</a> documentation. -spec getProgramStageiv(Program, Shadertype, Pname) -> integer() when Program :: integer(),Shadertype :: enum(),Pname :: enum(). getProgramStageiv(Program,Shadertype,Pname) -> call(5755, <<Program:?GLuint,Shadertype:?GLenum,Pname:?GLenum>>). @@ -15286,20 +7296,7 @@ getProgramStageiv(Program,Shadertype,Pname) -> %% `Values' specifies the address of an array containing the new values for the parameter %% specified by `Pname' . %% -%% When `Pname' is `?GL_PATCH_VERTICES', `Value' specifies the number of -%% vertices that will be used to make up a single patch primitive. Patch primitives are consumed -%% by the tessellation control shader (if present) and subsequently used for tessellation. -%% When primitives are specified using {@link gl:drawArrays/3} or a similar function, each -%% patch will be made from `Parameter' control points, each represented by a vertex -%% taken from the enabeld vertex arrays. `Parameter' must be greater than zero, and -%% less than or equal to the value of `?GL_MAX_PATCH_VERTICES'. -%% -%% When `Pname' is `?GL_PATCH_DEFAULT_OUTER_LEVEL' or `?GL_PATCH_DEFAULT_INNER_LEVEL' -%% , `Values' contains the address of an array contiaining the default outer or inner -%% tessellation levels, respectively, to be used when no tessellation control shader is present. -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPatchParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPatchParameter.xhtml">external</a> documentation. -spec patchParameteri(Pname, Value) -> 'ok' when Pname :: enum(),Value :: integer(). patchParameteri(Pname,Value) -> cast(5756, <<Pname:?GLenum,Value:?GLint>>). @@ -15319,18 +7316,7 @@ patchParameterfv(Pname,Values) -> %% . If `Id' has not previously been bound, a new transform feedback object with name `Id' %% and initialized with with the default transform state vector is created. %% -%% In the initial state, a default transform feedback object is bound and treated as a transform -%% feedback object with a name of zero. If the name zero is subsequently bound, the default -%% transform feedback object is again bound to the GL state. -%% -%% While a transform feedback buffer object is bound, GL operations on the target to which -%% it is bound affect the bound transform feedback object, and queries of the target to which -%% a transform feedback object is bound return state from the bound object. When buffer objects -%% are bound for transform feedback, they are attached to the currently bound transform feedback -%% object. Buffer objects are used for trans- form feedback only if they are attached to -%% the currently bound transform feedback object. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindTransformFeedback.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindTransformFeedback.xhtml">external</a> documentation. -spec bindTransformFeedback(Target, Id) -> 'ok' when Target :: enum(),Id :: integer(). bindTransformFeedback(Target,Id) -> cast(5758, <<Target:?GLenum,Id:?GLuint>>). @@ -15343,7 +7329,7 @@ bindTransformFeedback(Target,Id) -> %% and it has no contents. If an active transform feedback object is deleted, its name immediately %% becomes unused, but the underlying object is not deleted until it is no longer active. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteTransformFeedbacks.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteTransformFeedbacks.xhtml">external</a> documentation. -spec deleteTransformFeedbacks(Ids) -> 'ok' when Ids :: [integer()]. deleteTransformFeedbacks(Ids) -> IdsLen = length(Ids), @@ -15356,7 +7342,7 @@ deleteTransformFeedbacks(Ids) -> %% names in `Ids' . These names are marked as used, for the purposes of ``gl:genTransformFeedbacks'' %% only, but they acquire transform feedback state only when they are first bound. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenTransformFeedbacks.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenTransformFeedbacks.xhtml">external</a> documentation. -spec genTransformFeedbacks(N) -> [integer()] when N :: integer(). genTransformFeedbacks(N) -> call(5760, <<N:?GLsizei>>). @@ -15371,7 +7357,7 @@ genTransformFeedbacks(N) -> %% the name is not a transform feedback object and ``gl:isTransformFeedback'' returns `?GL_FALSE' %% . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsTransformFeedback.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsTransformFeedback.xhtml">external</a> documentation. -spec isTransformFeedback(Id) -> 0|1 when Id :: integer(). isTransformFeedback(Id) -> call(5761, <<Id:?GLuint>>). @@ -15384,7 +7370,7 @@ isTransformFeedback(Id) -> %% to the object results in an error. However, a new transform feedback object may be bound %% while transform feedback is paused. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glPauseTransformFeedback.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPauseTransformFeedback.xhtml">external</a> documentation. -spec pauseTransformFeedback() -> 'ok'. pauseTransformFeedback() -> cast(5762, <<>>). @@ -15397,7 +7383,7 @@ pauseTransformFeedback() -> %% to the object results in an error. However, a new transform feedback object may be bound %% while transform feedback is paused. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glResumeTransformFeedback.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glResumeTransformFeedback.xhtml">external</a> documentation. -spec resumeTransformFeedback() -> 'ok'. resumeTransformFeedback() -> cast(5763, <<>>). @@ -15411,7 +7397,7 @@ resumeTransformFeedback() -> %% zero the last time transform feedback was active on the transform feedback object named %% by `Id' . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawTransformFeedback.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawTransformFeedback.xhtml">external</a> documentation. -spec drawTransformFeedback(Mode, Id) -> 'ok' when Mode :: enum(),Id :: integer(). drawTransformFeedback(Mode,Id) -> cast(5764, <<Mode:?GLenum,Id:?GLuint>>). @@ -15426,17 +7412,14 @@ drawTransformFeedback(Mode,Id) -> %% the last time transform feedback was active on the transform feedback object named by `Id' %% . %% -%% Calling {@link gl:drawTransformFeedback/2} is equivalent to calling ``gl:drawTransformFeedbackStream'' -%% with `Stream' set to zero. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawTransformFeedbackStream.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStream.xhtml">external</a> documentation. -spec drawTransformFeedbackStream(Mode, Id, Stream) -> 'ok' when Mode :: enum(),Id :: integer(),Stream :: integer(). drawTransformFeedbackStream(Mode,Id,Stream) -> cast(5765, <<Mode:?GLenum,Id:?GLuint,Stream:?GLuint>>). %% @doc glBeginQueryIndexe %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBeginQueryIndexe.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec beginQueryIndexed(Target, Index, Id) -> 'ok' when Target :: enum(),Index :: integer(),Id :: integer(). beginQueryIndexed(Target,Index,Id) -> cast(5766, <<Target:?GLenum,Index:?GLuint,Id:?GLuint>>). @@ -15450,70 +7433,7 @@ beginQueryIndexed(Target,Index,Id) -> %% , `?GL_PRIMITIVES_GENERATED', `?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN', or `?GL_TIME_ELAPSED' %% . The behavior of the query object depends on its type and is as follows. %% -%% `Index' specifies the index of the query target and must be between a `Target' -specific -%% maximum. -%% -%% If `Target' is `?GL_SAMPLES_PASSED', `Id' must be an unused name, or the -%% name of an existing occlusion query object. When ``gl:beginQueryIndexed'' is executed, -%% the query object's samples-passed counter is reset to 0. Subsequent rendering will increment -%% the counter for every sample that passes the depth test. If the value of `?GL_SAMPLE_BUFFERS' -%% is 0, then the samples-passed count is incremented by 1 for each fragment. If the value -%% of `?GL_SAMPLE_BUFFERS' is 1, then the samples-passed count is incremented by the -%% number of samples whose coverage bit is set. However, implementations, at their discression -%% may instead increase the samples-passed count by the value of `?GL_SAMPLES' if any -%% sample in the fragment is covered. When ``gl:endQueryIndexed'' is executed, the samples-passed -%% counter is assigned to the query object's result value. This value can be queried by calling -%% {@link gl:getQueryObjectiv/2} with `Pname' `?GL_QUERY_RESULT'. When `Target' -%% is `?GL_SAMPLES_PASSED', `Index' must be zero. -%% -%% If `Target' is `?GL_ANY_SAMPLES_PASSED', `Id' must be an unused name, -%% or the name of an existing boolean occlusion query object. When ``gl:beginQueryIndexed'' -%% is executed, the query object's samples-passed flag is reset to `?GL_FALSE'. Subsequent -%% rendering causes the flag to be set to `?GL_TRUE' if any sample passes the depth -%% test. When ``gl:endQueryIndexed'' is executed, the samples-passed flag is assigned to -%% the query object's result value. This value can be queried by calling {@link gl:getQueryObjectiv/2} -%% with `Pname' `?GL_QUERY_RESULT'. When `Target' is `?GL_ANY_SAMPLES_PASSED' -%% , `Index' must be zero. -%% -%% If `Target' is `?GL_PRIMITIVES_GENERATED', `Id' must be an unused name, -%% or the name of an existing primitive query object previously bound to the `?GL_PRIMITIVES_GENERATED' -%% query binding. When ``gl:beginQueryIndexed'' is executed, the query object's primitives-generated -%% counter is reset to 0. Subsequent rendering will increment the counter once for every -%% vertex that is emitted from the geometry shader to the stream given by `Index' , or -%% from the vertex shader if `Index' is zero and no geometry shader is present. When ``gl:endQueryIndexed'' -%% is executed, the primitives-generated counter for stream `Index' is assigned to -%% the query object's result value. This value can be queried by calling {@link gl:getQueryObjectiv/2} -%% with `Pname' `?GL_QUERY_RESULT'. When `Target' is `?GL_PRIMITIVES_GENERATED' -%% , `Index' must be less than the value of `?GL_MAX_VERTEX_STREAMS'. -%% -%% If `Target' is `?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN', `Id' must -%% be an unused name, or the name of an existing primitive query object previously bound -%% to the `?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN' query binding. When ``gl:beginQueryIndexed'' -%% is executed, the query object's primitives-written counter for the stream specified by `Index' -%% is reset to 0. Subsequent rendering will increment the counter once for every vertex -%% that is written into the bound transform feedback buffer(s) for stream `Index' . If -%% transform feedback mode is not activated between the call to ``gl:beginQueryIndexed'' -%% and ``gl:endQueryIndexed'', the counter will not be incremented. When ``gl:endQueryIndexed'' -%% is executed, the primitives-written counter for stream `Index' is assigned to the -%% query object's result value. This value can be queried by calling {@link gl:getQueryObjectiv/2} -%% with `Pname' `?GL_QUERY_RESULT'. When `Target' is `?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN' -%% , `Index' must be less than the value of `?GL_MAX_VERTEX_STREAMS'. -%% -%% If `Target' is `?GL_TIME_ELAPSED', `Id' must be an unused name, or the -%% name of an existing timer query object previously bound to the `?GL_TIME_ELAPSED' -%% query binding. When ``gl:beginQueryIndexed'' is executed, the query object's time counter -%% is reset to 0. When ``gl:endQueryIndexed'' is executed, the elapsed server time that -%% has passed since the call to ``gl:beginQueryIndexed'' is written into the query object's -%% time counter. This value can be queried by calling {@link gl:getQueryObjectiv/2} with `Pname' -%% `?GL_QUERY_RESULT'. When `Target' is `?GL_TIME_ELAPSED', `Index' must -%% be zero. -%% -%% Querying the `?GL_QUERY_RESULT' implicitly flushes the GL pipeline until the rendering -%% delimited by the query object has completed and the result is available. `?GL_QUERY_RESULT_AVAILABLE' -%% can be queried to determine if the result is immediately available or if the rendering -%% is not yet complete. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBeginQueryIndexed.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBeginQueryIndexed.xhtml">external</a> documentation. -spec endQueryIndexed(Target, Index) -> 'ok' when Target :: enum(),Index :: integer(). endQueryIndexed(Target,Index) -> cast(5767, <<Target:?GLenum,Index:?GLuint>>). @@ -15525,13 +7445,7 @@ endQueryIndexed(Target,Index) -> %% the index of the query object target and must be between zero and a target-specific maxiumum. %% %% -%% `Pname' names a specific query object target parameter. When `Pname' is `?GL_CURRENT_QUERY' -%% , the name of the currently active query for the specified `Index' of `Target' , -%% or zero if no query is active, will be placed in `Params' . If `Pname' is `?GL_QUERY_COUNTER_BITS' -%% , the implementation-dependent number of bits used to hold the result of queries for `Target' -%% is returned in `Params' . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetQueryIndexed.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetQueryIndexed.xhtml">external</a> documentation. -spec getQueryIndexediv(Target, Index, Pname) -> integer() when Target :: enum(),Index :: integer(),Pname :: enum(). getQueryIndexediv(Target,Index,Pname) -> call(5768, <<Target:?GLenum,Index:?GLuint,Pname:?GLenum>>). @@ -15543,7 +7457,7 @@ getQueryIndexediv(Target,Index,Pname) -> %% subsequently be called and the implementation may at that time reallocate resources previously %% freed by the call to ``gl:releaseShaderCompiler''. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glReleaseShaderCompiler.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glReleaseShaderCompiler.xhtml">external</a> documentation. -spec releaseShaderCompiler() -> 'ok'. releaseShaderCompiler() -> cast(5769, <<>>). @@ -15555,17 +7469,7 @@ releaseShaderCompiler() -> %% bytes of binary shader code stored in client memory. `BinaryFormat' specifies the %% format of the pre-compiled code. %% -%% The binary image contained in `Binary' will be decoded according to the extension -%% specification defining the specified `BinaryFormat' token. OpenGL does not define -%% any specific binary formats, but it does provide a mechanism to obtain token vaues for -%% such formats provided by such extensions. -%% -%% Depending on the types of the shader objects in `Shaders' , ``gl:shaderBinary'' -%% will individually load binary vertex or fragment shaders, or load an executable binary -%% that contains an optimized pair of vertex and fragment shaders stored in the same binary. -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glShaderBinary.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glShaderBinary.xhtml">external</a> documentation. -spec shaderBinary(Shaders, Binaryformat, Binary) -> 'ok' when Shaders :: [integer()],Binaryformat :: enum(),Binary :: binary(). shaderBinary(Shaders,Binaryformat,Binary) -> ShadersLen = length(Shaders), @@ -15583,17 +7487,7 @@ shaderBinary(Shaders,Binaryformat,Binary) -> %% `?GL_HIGH_FLOAT', `?GL_LOW_INT', `?GL_MEDIUM_INT', or `?GL_HIGH_INT'. %% %% -%% `Range' points to an array of two integers into which the format's numeric range -%% will be returned. If min and max are the smallest values representable in the format, -%% then the values returned are defined to be: `Range' [0] = floor(log2(|min|)) and `Range' -%% [1] = floor(log2(|max|)). -%% -%% `Precision' specifies the address of an integer into which will be written the log2 -%% value of the number of bits of precision of the format. If the smallest representable -%% value greater than 1 is 1 + `eps', then the integer addressed by `Precision' -%% will contain floor(-log2(eps)). -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetShaderPrecisionFormat.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetShaderPrecisionFormat.xhtml">external</a> documentation. -spec getShaderPrecisionFormat(Shadertype, Precisiontype) -> {Range :: {integer(),integer()},Precision :: integer()} when Shadertype :: enum(),Precisiontype :: enum(). getShaderPrecisionFormat(Shadertype,Precisiontype) -> call(5771, <<Shadertype:?GLenum,Precisiontype:?GLenum>>). @@ -15606,7 +7500,7 @@ depthRangef(N,F) -> %% @doc glClearDepthf %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glClearDepthf.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec clearDepthf(D) -> 'ok' when D :: clamp(). clearDepthf(D) -> cast(5773, <<D:?GLclampf>>). @@ -15621,13 +7515,7 @@ clearDepthf(D) -> %% in the variable whose address is given by `Length' . If `Length' is `?NULL', %% then no length is returned. %% -%% The format of the program binary written into `Binary' is returned in the variable -%% whose address is given by `BinaryFormat' , and may be implementation dependent. The -%% binary produced by the GL may subsequently be returned to the GL by calling {@link gl:programBinary/3} -%% , with `BinaryFormat' and `Length' set to the values returned by ``gl:getProgramBinary'' -%% , and passing the returned binary data in the `Binary' parameter. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramBinary.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetProgramBinary.xhtml">external</a> documentation. -spec getProgramBinary(Program, BufSize) -> {BinaryFormat :: enum(),Binary :: binary()} when Program :: integer(),BufSize :: integer(). getProgramBinary(Program,BufSize) -> call(5774, <<Program:?GLuint,BufSize:?GLsizei>>). @@ -15642,19 +7530,7 @@ getProgramBinary(Program,BufSize) -> %% are not met, loading the program binary will fail and `Program' 's `?GL_LINK_STATUS' %% will be set to `?GL_FALSE'. %% -%% A program object's program binary is replaced by calls to {@link gl:linkProgram/1} or ``gl:programBinary'' -%% . When linking success or failure is concerned, ``gl:programBinary'' can be considered -%% to perform an implicit linking operation. {@link gl:linkProgram/1} and ``gl:programBinary'' -%% both set the program object's `?GL_LINK_STATUS' to `?GL_TRUE' or `?GL_FALSE' -%% . -%% -%% A successful call to ``gl:programBinary'' will reset all uniform variables to their -%% initial values. The initial value is either the value of the variable's initializer as -%% specified in the original shader source, or zero if no initializer was present. Additionally, -%% all vertex shader input and fragment shader output assignments that were in effect when -%% the program was linked before saving are restored with ``gl:programBinary'' is called. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramBinary.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glProgramBinary.xhtml">external</a> documentation. -spec programBinary(Program, BinaryFormat, Binary) -> 'ok' when Program :: integer(),BinaryFormat :: enum(),Binary :: binary(). programBinary(Program,BinaryFormat,Binary) -> send_bin(Binary), @@ -15665,22 +7541,7 @@ programBinary(Program,BinaryFormat,Binary) -> %% ``gl:programParameter'' specifies a new value for the parameter nameed by `Pname' %% for the program object `Program' . %% -%% If `Pname' is `?GL_PROGRAM_BINARY_RETRIEVABLE_HINT', `Value' should be `?GL_FALSE' -%% or `?GL_TRUE' to indicate to the implementation the intention of the application -%% to retrieve the program's binary representation with {@link gl:getProgramBinary/2} . The -%% implementation may use this information to store information that may be useful for a -%% future query of the program's binary. It is recommended to set `?GL_PROGRAM_BINARY_RETRIEVABLE_HINT' -%% for the program to `?GL_TRUE' before calling {@link gl:linkProgram/1} , and using -%% the program at run-time if the binary is to be retrieved later. -%% -%% If `Pname' is `?GL_PROGRAM_SEPARABLE', `Value' must be `?GL_TRUE' -%% or `?GL_FALSE' and indicates whether `Program' can be bound to individual pipeline -%% stages via {@link gl:useProgramStages/3} . A program's `?GL_PROGRAM_SEPARABLE' parameter -%% must be set to `?GL_TRUE'`before' {@link gl:linkProgram/1} is called in order -%% for it to be usable with a program pipeline object. The initial state of `?GL_PROGRAM_SEPARABLE' -%% is `?GL_FALSE'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramParameter.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glProgramParameter.xhtml">external</a> documentation. -spec programParameteri(Program, Pname, Value) -> 'ok' when Program :: integer(),Pname :: enum(),Value :: integer(). programParameteri(Program,Pname,Value) -> cast(5776, <<Program:?GLuint,Pname:?GLenum,Value:?GLint>>). @@ -15697,15 +7558,7 @@ programParameteri(Program,Pname,Value) -> %% special value `?GL_ALL_SHADER_BITS' may be specified to indicate that all executables %% contained in `Program' should be installed in `Pipeline' . %% -%% If `Program' refers to a program object with a valid shader attached for an indicated -%% shader stage, ``gl:useProgramStages'' installs the executable code for that stage in -%% the indicated program pipeline object `Pipeline' . If `Program' is zero, or refers -%% to a program object with no valid shader executable for a given stage, it is as if the -%% pipeline object has no programmable stage configured for the indicated shader stages. If `Stages' -%% contains bits other than those listed above, and is not equal to `?GL_ALL_SHADER_BITS' -%% , an error is generated. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glUseProgramStages.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glUseProgramStages.xhtml">external</a> documentation. -spec useProgramStages(Pipeline, Stages, Program) -> 'ok' when Pipeline :: integer(),Stages :: integer(),Program :: integer(). useProgramStages(Pipeline,Stages,Program) -> cast(5777, <<Pipeline:?GLuint,Stages:?GLbitfield,Program:?GLuint>>). @@ -15717,14 +7570,14 @@ useProgramStages(Pipeline,Stages,Program) -> %% the active program pipeline object is the target of calls to {@link gl:uniform1f/2} when %% no program has been made current through a call to {@link gl:useProgram/1} . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glActiveShaderProgram.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glActiveShaderProgram.xhtml">external</a> documentation. -spec activeShaderProgram(Pipeline, Program) -> 'ok' when Pipeline :: integer(),Program :: integer(). activeShaderProgram(Pipeline,Program) -> cast(5778, <<Pipeline:?GLuint,Program:?GLuint>>). %% @doc glCreateShaderProgramv %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glCreateShaderProgramv.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec createShaderProgramv(Type, Strings) -> integer() when Type :: enum(),Strings :: iolist(). createShaderProgramv(Type,Strings) -> StringsTemp = list_to_binary([[Str|[0]] || Str <- Strings ]), @@ -15738,17 +7591,7 @@ createShaderProgramv(Type,Strings) -> %% no program pipeline exists with name `Pipeline' then a new pipeline object is created %% with that name and initialized to the default state vector. %% -%% When a program pipeline object is bound using ``gl:bindProgramPipeline'', any previous -%% binding is broken and is replaced with a binding to the specified pipeline object. If `Pipeline' -%% is zero, the previous binding is broken and is not replaced, leaving no pipeline object -%% bound. If no current program object has been established by {@link gl:useProgram/1} , the -%% program objects used for each stage and for uniform updates are taken from the bound program -%% pipeline object, if any. If there is a current program object established by {@link gl:useProgram/1} -%% , the bound program pipeline object has no effect on rendering or uniform updates. When -%% a bound program pipeline object is used for rendering, individual shader executables are -%% taken from its program objects. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindProgramPipeline.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindProgramPipeline.xhtml">external</a> documentation. -spec bindProgramPipeline(Pipeline) -> 'ok' when Pipeline :: integer(). bindProgramPipeline(Pipeline) -> cast(5780, <<Pipeline:?GLuint>>). @@ -15762,7 +7605,7 @@ bindProgramPipeline(Pipeline) -> %% the binding for that object reverts to zero and no program pipeline object becomes current. %% %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgramPipelines.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDeleteProgramPipelines.xhtml">external</a> documentation. -spec deleteProgramPipelines(Pipelines) -> 'ok' when Pipelines :: [integer()]. deleteProgramPipelines(Pipelines) -> PipelinesLen = length(Pipelines), @@ -15775,7 +7618,7 @@ deleteProgramPipelines(Pipelines) -> %% names in `Pipelines' . These names are marked as used, for the purposes of ``gl:genProgramPipelines'' %% only, but they acquire program pipeline state only when they are first bound. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGenProgramPipelines.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenProgramPipelines.xhtml">external</a> documentation. -spec genProgramPipelines(N) -> [integer()] when N :: integer(). genProgramPipelines(N) -> call(5782, <<N:?GLsizei>>). @@ -15790,7 +7633,7 @@ genProgramPipelines(N) -> %% the name is not a program pipeline object and ``gl:isProgramPipeline'' returns `?GL_FALSE' %% . %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glIsProgramPipeline.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glIsProgramPipeline.xhtml">external</a> documentation. -spec isProgramPipeline(Pipeline) -> 0|1 when Pipeline :: integer(). isProgramPipeline(Pipeline) -> call(5783, <<Pipeline:?GLuint>>). @@ -15802,33 +7645,7 @@ isProgramPipeline(Pipeline) -> %% retrieve. The value of the parameter is written to the variable whose address is given %% by `Params' . %% -%% If `Pname' is `?GL_ACTIVE_PROGRAM', the name of the active program object of -%% the program pipeline object is returned in `Params' . -%% -%% If `Pname' is `?GL_VERTEX_SHADER', the name of the current program object for -%% the vertex shader type of the program pipeline object is returned in `Params' . -%% -%% If `Pname' is `?GL_TESS_CONTROL_SHADER', the name of the current program object -%% for the tessellation control shader type of the program pipeline object is returned in `Params' -%% . -%% -%% If `Pname' is `?GL_TESS_EVALUATION_SHADER', the name of the current program -%% object for the tessellation evaluation shader type of the program pipeline object is returned -%% in `Params' . -%% -%% If `Pname' is `?GL_GEOMETRY_SHADER', the name of the current program object -%% for the geometry shader type of the program pipeline object is returned in `Params' . -%% -%% -%% If `Pname' is `?GL_FRAGMENT_SHADER', the name of the current program object -%% for the fragment shader type of the program pipeline object is returned in `Params' . -%% -%% -%% If `Pname' is `?GL_INFO_LOG_LENGTH', the length of the info log, including -%% the null terminator, is returned in `Params' . If there is no info log, zero is returned. -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramPipeline.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetProgramPipeline.xhtml">external</a> documentation. -spec getProgramPipelineiv(Pipeline, Pname) -> integer() when Pipeline :: integer(),Pname :: enum(). getProgramPipelineiv(Pipeline,Pname) -> call(5784, <<Pipeline:?GLuint,Pname:?GLenum>>). @@ -15840,62 +7657,7 @@ getProgramPipelineiv(Pipeline,Pname) -> %% which should be a value returned by {@link gl:getUniformLocation/2} . ``gl:programUniform'' %% operates on the program object specified by `Program' . %% -%% The commands ``gl:programUniform{1|2|3|4}{f|i|ui}'' are used to change the value of -%% the uniform variable specified by `Location' using the values passed as arguments. -%% The number specified in the command should match the number of components in the data -%% type of the specified uniform variable (e.g., `1' for float, int, unsigned int, bool; -%% `2' for vec2, ivec2, uvec2, bvec2, etc.). The suffix `f' indicates that floating-point -%% values are being passed; the suffix `i' indicates that integer values are being passed; -%% the suffix `ui' indicates that unsigned integer values are being passed, and this -%% type should also match the data type of the specified uniform variable. The `i' variants -%% of this function should be used to provide values for uniform variables defined as int, ivec2 -%% , ivec3, ivec4, or arrays of these. The `ui' variants of this function should be -%% used to provide values for uniform variables defined as unsigned int, uvec2, uvec3, uvec4, -%% or arrays of these. The `f' variants should be used to provide values for uniform -%% variables of type float, vec2, vec3, vec4, or arrays of these. Either the `i', `ui' -%% or `f' variants may be used to provide values for uniform variables of type bool, bvec2 -%% , bvec3, bvec4, or arrays of these. The uniform variable will be set to false if the input -%% value is 0 or 0.0f, and it will be set to true otherwise. -%% -%% All active uniform variables defined in a program object are initialized to 0 when the -%% program object is linked successfully. They retain the values assigned to them by a call -%% to ``gl:programUniform'' until the next successful link operation occurs on the program -%% object, when they are once again initialized to 0. -%% -%% The commands ``gl:programUniform{1|2|3|4}{f|i|ui}v'' can be used to modify a single -%% uniform variable or a uniform variable array. These commands pass a count and a pointer -%% to the values to be loaded into a uniform variable or a uniform variable array. A count -%% of 1 should be used if modifying the value of a single uniform variable, and a count of -%% 1 or greater can be used to modify an entire array or part of an array. When loading `n' -%% elements starting at an arbitrary position `m' in a uniform variable array, elements -%% `m' + `n' - 1 in the array will be replaced with the new values. If `M' + `N' -%% - 1 is larger than the size of the uniform variable array, values for all array elements -%% beyond the end of the array will be ignored. The number specified in the name of the command -%% indicates the number of components for each element in `Value' , and it should match -%% the number of components in the data type of the specified uniform variable (e.g., `1' -%% for float, int, bool; `2' for vec2, ivec2, bvec2, etc.). The data type specified -%% in the name of the command must match the data type for the specified uniform variable -%% as described previously for ``gl:programUniform{1|2|3|4}{f|i|ui}''. -%% -%% For uniform variable arrays, each element of the array is considered to be of the type -%% indicated in the name of the command (e.g., ``gl:programUniform3f'' or ``gl:programUniform3fv'' -%% can be used to load a uniform variable array of type vec3). The number of elements of -%% the uniform variable array to be modified is specified by `Count' -%% -%% The commands ``gl:programUniformMatrix{2|3|4|2x3|3x2|2x4|4x2|3x4|4x3}fv'' are used -%% to modify a matrix or an array of matrices. The numbers in the command name are interpreted -%% as the dimensionality of the matrix. The number `2' indicates a 2 × 2 matrix (i.e., -%% 4 values), the number `3' indicates a 3 × 3 matrix (i.e., 9 values), and the number `4' -%% indicates a 4 × 4 matrix (i.e., 16 values). Non-square matrix dimensionality is explicit, -%% with the first number representing the number of columns and the second number representing -%% the number of rows. For example, `2x4' indicates a 2 × 4 matrix with 2 columns and -%% 4 rows (i.e., 8 values). If `Transpose' is `?GL_FALSE', each matrix is assumed -%% to be supplied in column major order. If `Transpose' is `?GL_TRUE', each matrix -%% is assumed to be supplied in row major order. The `Count' argument indicates the -%% number of matrices to be passed. A count of 1 should be used if modifying the value of -%% a single matrix, and a count greater than 1 can be used to modify an array of matrices. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glProgramUniform.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glProgramUniform.xhtml">external</a> documentation. -spec programUniform1i(Program, Location, V0) -> 'ok' when Program :: integer(),Location :: integer(),V0 :: integer(). programUniform1i(Program,Location,V0) -> cast(5785, <<Program:?GLuint,Location:?GLint,V0:?GLint>>). @@ -16269,15 +8031,7 @@ programUniformMatrix4x3dv(Program,Location,Transpose,Value) -> %% this as an opportunity to perform any internal shader modifications that may be required %% to ensure correct operation of the installed shaders given the current GL state. %% -%% After a program pipeline has been validated, its validation status is set to `?GL_TRUE' -%% . The validation status of a program pipeline object may be queried by calling {@link gl:getProgramPipelineiv/2} -%% with parameter `?GL_VALIDATE_STATUS'. -%% -%% If `Pipeline' is a name previously returned from a call to {@link gl:genProgramPipelines/1} -%% but that has not yet been bound by a call to {@link gl:bindProgramPipeline/1} , a new program -%% pipeline object is created with name `Pipeline' and the default state vector. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glValidateProgramPipeline.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glValidateProgramPipeline.xhtml">external</a> documentation. -spec validateProgramPipeline(Pipeline) -> 'ok' when Pipeline :: integer(). validateProgramPipeline(Pipeline) -> cast(5835, <<Pipeline:?GLuint>>). @@ -16291,38 +8045,35 @@ validateProgramPipeline(Pipeline) -> %% of characters written into `InfoLog' is returned in the integer whose address is %% given by `Length' . If `Length' is `?NULL', no length is returned. %% -%% The actual length of the info log for the program pipeline may be determined by calling {@link gl:getProgramPipelineiv/2} -%% with `Pname' set to `?GL_INFO_LOG_LENGTH'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetProgramPipelineInfoLog.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetProgramPipelineInfoLog.xhtml">external</a> documentation. -spec getProgramPipelineInfoLog(Pipeline, BufSize) -> string() when Pipeline :: integer(),BufSize :: integer(). getProgramPipelineInfoLog(Pipeline,BufSize) -> call(5836, <<Pipeline:?GLuint,BufSize:?GLsizei>>). %% @doc glVertexAttribL %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribL.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec vertexAttribL1d(Index, X) -> 'ok' when Index :: integer(),X :: float(). vertexAttribL1d(Index,X) -> cast(5837, <<Index:?GLuint,0:32,X:?GLdouble>>). %% @doc glVertexAttribL %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribL.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec vertexAttribL2d(Index, X, Y) -> 'ok' when Index :: integer(),X :: float(),Y :: float(). vertexAttribL2d(Index,X,Y) -> cast(5838, <<Index:?GLuint,0:32,X:?GLdouble,Y:?GLdouble>>). %% @doc glVertexAttribL %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribL.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec vertexAttribL3d(Index, X, Y, Z) -> 'ok' when Index :: integer(),X :: float(),Y :: float(),Z :: float(). vertexAttribL3d(Index,X,Y,Z) -> cast(5839, <<Index:?GLuint,0:32,X:?GLdouble,Y:?GLdouble,Z:?GLdouble>>). %% @doc glVertexAttribL %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribL.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec vertexAttribL4d(Index, X, Y, Z, W) -> 'ok' when Index :: integer(),X :: float(),Y :: float(),Z :: float(),W :: float(). vertexAttribL4d(Index,X,Y,Z,W) -> cast(5840, <<Index:?GLuint,0:32,X:?GLdouble,Y:?GLdouble,Z:?GLdouble,W:?GLdouble>>). @@ -16345,7 +8096,7 @@ vertexAttribL4dv(Index,{X,Y,Z,W}) -> vertexAttribL4d(Index,X,Y,Z,W). %% @doc glVertexAttribLPointer %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribLPointer.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec vertexAttribLPointer(Index, Size, Type, Stride, Pointer) -> 'ok' when Index :: integer(),Size :: integer(),Type :: enum(),Stride :: integer(),Pointer :: offset()|mem(). vertexAttribLPointer(Index,Size,Type,Stride,Pointer) when is_integer(Pointer) -> cast(5841, <<Index:?GLuint,Size:?GLint,Type:?GLenum,Stride:?GLsizei,Pointer:?GLuint>>); @@ -16355,14 +8106,14 @@ vertexAttribLPointer(Index,Size,Type,Stride,Pointer) -> %% @doc glGetVertexAttribL %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetVertexAttribL.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getVertexAttribLdv(Index, Pname) -> {float(),float(),float(),float()} when Index :: integer(),Pname :: enum(). getVertexAttribLdv(Index,Pname) -> call(5843, <<Index:?GLuint,Pname:?GLenum>>). %% @doc glViewportArrayv %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glViewportArrayv.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec viewportArrayv(First, V) -> 'ok' when First :: integer(),V :: [{float(),float(),float(),float()}]. viewportArrayv(First,V) -> VLen = length(V), @@ -16383,27 +8134,7 @@ viewportArrayv(First,V) -> %% coordinates to window coordinates. Let (x nd y nd) be normalized device coordinates. Then the window %% coordinates (x w y w) are computed as follows: %% -%% x w=(x nd+1) (width/2)+x -%% -%% y w=(y nd+1) (height/2)+y -%% -%% The location of the viewport's bottom left corner, given by ( x, y) is clamped to be -%% within the implementaiton-dependent viewport bounds range. The viewport bounds range [ -%% min, max] can be determined by calling {@link gl:getBooleanv/1} with argument `?GL_VIEWPORT_BOUNDS_RANGE' -%% . Viewport width and height are silently clamped to a range that depends on the implementation. -%% To query this range, call {@link gl:getBooleanv/1} with argument `?GL_MAX_VIEWPORT_DIMS'. -%% -%% The precision with which the GL interprets the floating point viewport bounds is implementation-dependent -%% and may be determined by querying the impementation-defined constant `?GL_VIEWPORT_SUBPIXEL_BITS' -%% . -%% -%% Calling ``gl:viewportIndexedfv'' is equivalent to calling see `glViewportArray' -%% with `First' set to `Index' , `Count' set to 1 and `V' passsed directly. -%% ``gl:viewportIndexedf'' is equivalent to: void glViewportIndexedf(GLuint index, GLfloat -%% x, GLfloat y, GLfloat w, GLfloat h) { const float v[4] = { x, y, w, h }; glViewportArrayv(index, -%% 1, v); } -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glViewportIndexed.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glViewportIndexed.xhtml">external</a> documentation. -spec viewportIndexedf(Index, X, Y, W, H) -> 'ok' when Index :: integer(),X :: float(),Y :: float(),W :: float(),H :: float(). viewportIndexedf(Index,X,Y,W,H) -> cast(5845, <<Index:?GLuint,X:?GLfloat,Y:?GLfloat,W:?GLfloat,H:?GLfloat>>). @@ -16416,7 +8147,7 @@ viewportIndexedfv(Index,{V1,V2,V3,V4}) -> %% @doc glScissorArrayv %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glScissorArrayv.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec scissorArrayv(First, V) -> 'ok' when First :: integer(),V :: [{integer(),integer(),integer(),integer()}]. scissorArrayv(First,V) -> VLen = length(V), @@ -16425,21 +8156,21 @@ scissorArrayv(First,V) -> %% @doc glScissorIndexe %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glScissorIndexe.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec scissorIndexed(Index, Left, Bottom, Width, Height) -> 'ok' when Index :: integer(),Left :: integer(),Bottom :: integer(),Width :: integer(),Height :: integer(). scissorIndexed(Index,Left,Bottom,Width,Height) -> cast(5848, <<Index:?GLuint,Left:?GLint,Bottom:?GLint,Width:?GLsizei,Height:?GLsizei>>). %% @doc glScissorIndexe %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glScissorIndexe.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec scissorIndexedv(Index, V) -> 'ok' when Index :: integer(),V :: {integer(),integer(),integer(),integer()}. scissorIndexedv(Index,{V1,V2,V3,V4}) -> cast(5849, <<Index:?GLuint,V1:?GLint,V2:?GLint,V3:?GLint,V4:?GLint>>). %% @doc glDepthRangeArrayv %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDepthRangeArrayv.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec depthRangeArrayv(First, V) -> 'ok' when First :: integer(),V :: [{clamp(),clamp()}]. depthRangeArrayv(First,V) -> VLen = length(V), @@ -16448,7 +8179,7 @@ depthRangeArrayv(First,V) -> %% @doc glDepthRangeIndexe %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDepthRangeIndexe.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec depthRangeIndexed(Index, N, F) -> 'ok' when Index :: integer(),N :: clamp(),F :: clamp(). depthRangeIndexed(Index,N,F) -> cast(5851, <<Index:?GLuint,0:32,N:?GLclampd,F:?GLclampd>>). @@ -16467,7 +8198,7 @@ getDoublei_v(Target,Index) -> %% @doc glDebugMessageControlARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDebugMessageControlARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec debugMessageControlARB(Source, Type, Severity, Ids, Enabled) -> 'ok' when Source :: enum(),Type :: enum(),Severity :: enum(),Ids :: [integer()],Enabled :: 0|1. debugMessageControlARB(Source,Type,Severity,Ids,Enabled) -> IdsLen = length(Ids), @@ -16476,7 +8207,7 @@ debugMessageControlARB(Source,Type,Severity,Ids,Enabled) -> %% @doc glDebugMessageInsertARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDebugMessageInsertARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec debugMessageInsertARB(Source, Type, Id, Severity, Buf) -> 'ok' when Source :: enum(),Type :: enum(),Id :: integer(),Severity :: enum(),Buf :: string(). debugMessageInsertARB(Source,Type,Id,Severity,Buf) -> BufLen = length(Buf), @@ -16484,14 +8215,14 @@ debugMessageInsertARB(Source,Type,Id,Severity,Buf) -> %% @doc glGetDebugMessageLogARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetDebugMessageLogARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getDebugMessageLogARB(Count, Bufsize) -> {integer(),Sources :: [enum()],Types :: [enum()],Ids :: [integer()],Severities :: [enum()],MessageLog :: [string()]} when Count :: integer(),Bufsize :: integer(). getDebugMessageLogARB(Count,Bufsize) -> call(5856, <<Count:?GLuint,Bufsize:?GLsizei>>). %% @doc glGetGraphicsResetStatusARB %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetGraphicsResetStatusARB.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getGraphicsResetStatusARB() -> enum(). getGraphicsResetStatusARB() -> call(5857, <<>>). @@ -16504,17 +8235,7 @@ getGraphicsResetStatusARB() -> %% is an internal 32-bit integer counter that may be read by a vertex shader as `?gl_InstanceID' %% . %% -%% ``gl:drawArraysInstancedBaseInstance'' has the same effect as: if ( mode or count is -%% invalid ) generate appropriate error else { for (int i = 0; i < primcount ; i++) { -%% instanceID = i; glDrawArrays(mode, first, count); } instanceID = 0; } -%% -%% Specific vertex attributes may be classified as `instanced' through the use of {@link gl:vertexAttribDivisor/2} -%% . Instanced vertex attributes supply per-instance vertex data to the vertex shader. The -%% index of the vertex fetched from the enabled instanced vertex attribute arrays is calculated -%% as: |gl_ InstanceID/divisor|&plus; baseInstance. Note that `Baseinstance' does not affect the shader-visible -%% value of `?gl_InstanceID'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawArraysInstancedBaseInstance.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawArraysInstancedBaseInstance.xhtml">external</a> documentation. -spec drawArraysInstancedBaseInstance(Mode, First, Count, Primcount, Baseinstance) -> 'ok' when Mode :: enum(),First :: integer(),Count :: integer(),Primcount :: integer(),Baseinstance :: integer(). drawArraysInstancedBaseInstance(Mode,First,Count,Primcount,Baseinstance) -> cast(5858, <<Mode:?GLenum,First:?GLint,Count:?GLsizei,Primcount:?GLsizei,Baseinstance:?GLuint>>). @@ -16527,17 +8248,7 @@ drawArraysInstancedBaseInstance(Mode,First,Count,Primcount,Baseinstance) -> %% is an internal 32-bit integer counter that may be read by a vertex shader as `?gl_InstanceID' %% . %% -%% ``gl:drawElementsInstancedBaseInstance'' has the same effect as: if (mode, count, or -%% type is invalid ) generate appropriate error else { for (int i = 0; i < primcount ; -%% i++) { instanceID = i; glDrawElements(mode, count, type, indices); } instanceID = 0; } -%% -%% Specific vertex attributes may be classified as `instanced' through the use of {@link gl:vertexAttribDivisor/2} -%% . Instanced vertex attributes supply per-instance vertex data to the vertex shader. The -%% index of the vertex fetched from the enabled instanced vertex attribute arrays is calculated -%% as |gl_ InstanceID/divisor|&plus; baseInstance. Note that `Baseinstance' does not affect the shader-visible -%% value of `?gl_InstanceID'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawElementsInstancedBaseInstance.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseInstance.xhtml">external</a> documentation. -spec drawElementsInstancedBaseInstance(Mode, Count, Type, Indices, Primcount, Baseinstance) -> 'ok' when Mode :: enum(),Count :: integer(),Type :: enum(),Indices :: offset()|mem(),Primcount :: integer(),Baseinstance :: integer(). drawElementsInstancedBaseInstance(Mode,Count,Type,Indices,Primcount,Baseinstance) when is_integer(Indices) -> cast(5859, <<Mode:?GLenum,Count:?GLsizei,Type:?GLenum,Indices:?GLuint,Primcount:?GLsizei,Baseinstance:?GLuint>>); @@ -16555,13 +8266,7 @@ drawElementsInstancedBaseInstance(Mode,Count,Type,Indices,Primcount,Baseinstance %% conditions). The operation is undefined if the sum would be negative. The `Basevertex' %% has no effect on the shader-visible value of `?gl_VertexID'. %% -%% Specific vertex attributes may be classified as `instanced' through the use of {@link gl:vertexAttribDivisor/2} -%% . Instanced vertex attributes supply per-instance vertex data to the vertex shader. The -%% index of the vertex fetched from the enabled instanced vertex attribute arrays is calculated -%% as |gl_ InstanceID/divisor|&plus; baseInstance. Note that `Baseinstance' does not affect the shader-visible -%% value of `?gl_InstanceID'. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawElementsInstancedBaseVertexBaseInstance.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertexBaseInstance.xhtml">external</a> documentation. -spec drawElementsInstancedBaseVertexBaseInstance(Mode, Count, Type, Indices, Primcount, Basevertex, Baseinstance) -> 'ok' when Mode :: enum(),Count :: integer(),Type :: enum(),Indices :: offset()|mem(),Primcount :: integer(),Basevertex :: integer(),Baseinstance :: integer(). drawElementsInstancedBaseVertexBaseInstance(Mode,Count,Type,Indices,Primcount,Basevertex,Baseinstance) when is_integer(Indices) -> cast(5861, <<Mode:?GLenum,Count:?GLsizei,Type:?GLenum,Indices:?GLuint,Primcount:?GLsizei,Basevertex:?GLint,Baseinstance:?GLuint>>); @@ -16571,21 +8276,21 @@ drawElementsInstancedBaseVertexBaseInstance(Mode,Count,Type,Indices,Primcount,Ba %% @doc glDrawTransformFeedbackInstance %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawTransformFeedbackInstance.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec drawTransformFeedbackInstanced(Mode, Id, Primcount) -> 'ok' when Mode :: enum(),Id :: integer(),Primcount :: integer(). drawTransformFeedbackInstanced(Mode,Id,Primcount) -> cast(5863, <<Mode:?GLenum,Id:?GLuint,Primcount:?GLsizei>>). %% @doc glDrawTransformFeedbackStreamInstance %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDrawTransformFeedbackStreamInstance.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec drawTransformFeedbackStreamInstanced(Mode, Id, Stream, Primcount) -> 'ok' when Mode :: enum(),Id :: integer(),Stream :: integer(),Primcount :: integer(). drawTransformFeedbackStreamInstanced(Mode,Id,Stream,Primcount) -> cast(5864, <<Mode:?GLenum,Id:?GLuint,Stream:?GLuint,Primcount:?GLsizei>>). %% @doc glGetInternalformat %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glGetInternalformat.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec getInternalformativ(Target, Internalformat, Pname, BufSize) -> [integer()] when Target :: enum(),Internalformat :: enum(),Pname :: enum(),BufSize :: integer(). getInternalformativ(Target,Internalformat,Pname,BufSize) -> call(5865, <<Target:?GLenum,Internalformat:?GLenum,Pname:?GLenum,BufSize:?GLsizei>>). @@ -16599,55 +8304,7 @@ getInternalformativ(Target,Internalformat,Pname,BufSize) -> %% any existing binding to the image unit is broken. `Level' specifies the level of %% the texture to bind to the image unit. %% -%% If `Texture' is the name of a one-, two-, or three-dimensional array texture, a -%% cube map or cube map array texture, or a two-dimensional multisample array texture, then -%% it is possible to bind either the entire array, or only a single layer of the array to -%% the image unit. In such cases, if `Layered' is `?GL_TRUE', the entire array -%% is attached to the image unit and `Layer' is ignored. However, if `Layered' is `?GL_FALSE' -%% then `Layer' specifies the layer of the array to attach to the image unit. -%% -%% `Access' specifies the access types to be performed by shaders and may be set to `?GL_READ_ONLY' -%% , `?GL_WRITE_ONLY', or `?GL_READ_WRITE' to indicate read-only, write-only or -%% read-write access, respectively. Violation of the access type specified in `Access' -%% (for example, if a shader writes to an image bound with `Access' set to `?GL_READ_ONLY' -%% ) will lead to undefined results, possibly including program termination. -%% -%% `Format' specifies the format that is to be used when performing formatted stores -%% into the image from shaders. `Format' must be compatible with the texture's internal -%% format and must be one of the formats listed in the following table. -%% -%% <table><tbody><tr><td>` Image Unit Format '</td><td>` Format Qualifier '</td></tr> -%% </tbody><tbody><tr><td>`?GL_RGBA32F'</td><td>rgba32f</td></tr><tr><td>`?GL_RGBA16F' -%% </td><td>rgba16f</td></tr><tr><td>`?GL_RG32F'</td><td>rg32f</td></tr><tr><td>`?GL_RG16F' -%% </td><td>rg16f</td></tr><tr><td>`?GL_R11F_G11F_B10F'</td><td>r11f_g11f_b10f</td></tr> -%% <tr><td>`?GL_R32F'</td><td>r32f</td></tr><tr><td>`?GL_R16F'</td><td>r16f</td></tr> -%% <tr><td>`?GL_RGBA32UI'</td><td>rgba32ui</td></tr><tr><td>`?GL_RGBA16UI'</td><td> -%% rgba16ui</td></tr><tr><td>`?GL_RGB10_A2UI'</td><td>rgb10_a2ui</td></tr><tr><td>`?GL_RGBA8UI' -%% </td><td>rgba8ui</td></tr><tr><td>`?GL_RG32UI'</td><td>rg32ui</td></tr><tr><td>`?GL_RG16UI' -%% </td><td>rg16ui</td></tr><tr><td>`?GL_RG8UI'</td><td>rg8ui</td></tr><tr><td>`?GL_R32UI' -%% </td><td>r32ui</td></tr><tr><td>`?GL_R16UI'</td><td>r16ui</td></tr><tr><td>`?GL_R8UI' -%% </td><td>r8ui</td></tr><tr><td>`?GL_RGBA32I'</td><td>rgba32i</td></tr><tr><td>`?GL_RGBA16I' -%% </td><td>rgba16i</td></tr><tr><td>`?GL_RGBA8I'</td><td>rgba8i</td></tr><tr><td>`?GL_RG32I' -%% </td><td>rg32i</td></tr><tr><td>`?GL_RG16I'</td><td>rg16i</td></tr><tr><td>`?GL_RG8I' -%% </td><td>rg8i</td></tr><tr><td>`?GL_R32I'</td><td>r32i</td></tr><tr><td>`?GL_R16I' -%% </td><td>r16i</td></tr><tr><td>`?GL_R8I'</td><td>r8i</td></tr><tr><td>`?GL_RGBA16' -%% </td><td>rgba16</td></tr><tr><td>`?GL_RGB10_A2'</td><td>rgb10_a2</td></tr><tr><td>`?GL_RGBA8' -%% </td><td>rgba8</td></tr><tr><td>`?GL_RG16'</td><td>rg16</td></tr><tr><td>`?GL_RG8' -%% </td><td>rg8</td></tr><tr><td>`?GL_R16'</td><td>r16</td></tr><tr><td>`?GL_R8'</td> -%% <td>r8</td></tr><tr><td>`?GL_RGBA16_SNORM'</td><td>rgba16_snorm</td></tr><tr><td>`?GL_RGBA8_SNORM' -%% </td><td>rgba8_snorm</td></tr><tr><td>`?GL_RG16_SNORM'</td><td>rg16_snorm</td></tr><tr> -%% <td>`?GL_RG8_SNORM'</td><td>rg8_snorm</td></tr><tr><td>`?GL_R16_SNORM'</td><td>r16_snorm -%% </td></tr><tr><td>`?GL_R8_SNORM'</td><td>r8_snorm</td></tr></tbody></table> -%% -%% When a texture is bound to an image unit, the `Format' parameter for the image unit -%% need not exactly match the texture internal format as long as the formats are considered -%% compatible as defined in the OpenGL Specification. The matching criterion used for a given -%% texture may be determined by calling {@link gl:getTexParameterfv/2} with `Value' set -%% to `?GL_IMAGE_FORMAT_COMPATIBILITY_TYPE', with return values of `?GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE' -%% and `?GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS', specifying matches by size and class, -%% respectively. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glBindImageTexture.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindImageTexture.xhtml">external</a> documentation. -spec bindImageTexture(Unit, Texture, Level, Layered, Layer, Access, Format) -> 'ok' when Unit :: integer(),Texture :: integer(),Level :: integer(),Layered :: 0|1,Layer :: integer(),Access :: enum(),Format :: enum(). bindImageTexture(Unit,Texture,Level,Layered,Layer,Access,Format) -> cast(5866, <<Unit:?GLuint,Texture:?GLuint,Level:?GLint,Layered:?GLboolean,0:24,Layer:?GLint,Access:?GLenum,Format:?GLenum>>). @@ -16661,120 +8318,7 @@ bindImageTexture(Unit,Texture,Level,Layered,Layer,Access,Format) -> %% the set of operations that are synchronized with shader stores; the bits used in `Barriers' %% are as follows: %% -%% -%% -%% `?GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT': If set, vertex data sourced from buffer objects -%% after the barrier will reflect data written by shaders prior to the barrier. The set of -%% buffer objects affected by this bit is derived from the buffer object bindings used for -%% generic vertex attributes derived from the `?GL_VERTEX_ATTRIB_ARRAY_BUFFER' bindings. -%% -%% -%% `?GL_ELEMENT_ARRAY_BARRIER_BIT': If set, vertex array indices sourced from buffer -%% objects after the barrier will reflect data written by shaders prior to the barrier. The -%% buffer objects affected by this bit are derived from the `?GL_ELEMENT_ARRAY_BUFFER' -%% binding. -%% -%% `?GL_UNIFORM_BARRIER_BIT': Shader uniforms sourced from buffer objects after the -%% barrier will reflect data written by shaders prior to the barrier. -%% -%% `?GL_TEXTURE_FETCH_BARRIER_BIT': Texture fetches from shaders, including fetches -%% from buffer object memory via buffer textures, after the barrier will reflect data written -%% by shaders prior to the barrier. -%% -%% `?GL_SHADER_IMAGE_ACCESS_BARRIER_BIT': Memory accesses using shader image load, -%% store, and atomic built-in functions issued after the barrier will reflect data written -%% by shaders prior to the barrier. Additionally, image stores and atomics issued after the -%% barrier will not execute until all memory accesses (e.g., loads, stores, texture fetches, -%% vertex fetches) initiated prior to the barrier complete. -%% -%% `?GL_COMMAND_BARRIER_BIT': Command data sourced from buffer objects by Draw*Indirect -%% commands after the barrier will reflect data written by shaders prior to the barrier. -%% The buffer objects affected by this bit are derived from the `?GL_DRAW_INDIRECT_BUFFER' -%% binding. -%% -%% `?GL_PIXEL_BUFFER_BARRIER_BIT': Reads and writes of buffer objects via the `?GL_PIXEL_PACK_BUFFER' -%% and `?GL_PIXEL_UNPACK_BUFFER' bindings (via {@link gl:readPixels/7} , {@link gl:texSubImage1D/7} -%% , etc.) after the barrier will reflect data written by shaders prior to the barrier. Additionally, -%% buffer object writes issued after the barrier will wait on the completion of all shader -%% writes initiated prior to the barrier. -%% -%% `?GL_TEXTURE_UPDATE_BARRIER_BIT': Writes to a texture via ``gl:tex(Sub)Image*'', ``gl:copyTex(Sub)Image*'' -%% , ``gl:compressedTex(Sub)Image*'', and reads via {@link gl:getTexImage/5} after the barrier -%% will reflect data written by shaders prior to the barrier. Additionally, texture writes -%% from these commands issued after the barrier will not execute until all shader writes -%% initiated prior to the barrier complete. -%% -%% `?GL_BUFFER_UPDATE_BARRIER_BIT': Reads or writes via {@link gl:bufferSubData/4} , {@link gl:copyBufferSubData/5} -%% , or {@link gl:getBufferSubData/4} , or to buffer object memory mapped by see `glMapBuffer' -%% or see `glMapBufferRange' after the barrier will reflect data written by shaders -%% prior to the barrier. Additionally, writes via these commands issued after the barrier -%% will wait on the completion of any shader writes to the same memory initiated prior to -%% the barrier. -%% -%% `?GL_FRAMEBUFFER_BARRIER_BIT': Reads and writes via framebuffer object attachments -%% after the barrier will reflect data written by shaders prior to the barrier. Additionally, -%% framebuffer writes issued after the barrier will wait on the completion of all shader -%% writes issued prior to the barrier. -%% -%% `?GL_TRANSFORM_FEEDBACK_BARRIER_BIT': Writes via transform feedback bindings after -%% the barrier will reflect data written by shaders prior to the barrier. Additionally, transform -%% feedback writes issued after the barrier will wait on the completion of all shader writes -%% issued prior to the barrier. -%% -%% `?GL_ATOMIC_COUNTER_BARRIER_BIT': Accesses to atomic counters after the barrier -%% will reflect writes prior to the barrier. -%% -%% If `Barriers' is `?GL_ALL_BARRIER_BITS', shader memory accesses will be synchronized -%% relative to all the operations described above. -%% -%% Implementations may cache buffer object and texture image memory that could be written -%% by shaders in multiple caches; for example, there may be separate caches for texture, -%% vertex fetching, and one or more caches for shader memory accesses. Implementations are -%% not required to keep these caches coherent with shader memory writes. Stores issued by -%% one invocation may not be immediately observable by other pipeline stages or other shader -%% invocations because the value stored may remain in a cache local to the processor executing -%% the store, or because data overwritten by the store is still in a cache elsewhere in the -%% system. When ``gl:memoryBarrier'' is called, the GL flushes and/or invalidates any caches -%% relevant to the operations specified by the `Barriers' parameter to ensure consistent -%% ordering of operations across the barrier. -%% -%% To allow for independent shader invocations to communicate by reads and writes to a common -%% memory address, image variables in the OpenGL Shading Language may be declared as "coherent". -%% Buffer object or texture image memory accessed through such variables may be cached only -%% if caches are automatically updated due to stores issued by any other shader invocation. -%% If the same address is accessed using both coherent and non-coherent variables, the accesses -%% using variables declared as coherent will observe the results stored using coherent variables -%% in other invocations. Using variables declared as "coherent" guarantees only that the -%% results of stores will be immediately visible to shader invocations using similarly-declared -%% variables; calling ``gl:memoryBarrier'' is required to ensure that the stores are visible -%% to other operations. -%% -%% The following guidelines may be helpful in choosing when to use coherent memory accesses -%% and when to use barriers. -%% -%% Data that are read-only or constant may be accessed without using coherent variables or -%% calling MemoryBarrier(). Updates to the read-only data via API calls such as BufferSubData -%% will invalidate shader caches implicitly as required. -%% -%% Data that are shared between shader invocations at a fine granularity (e.g., written by -%% one invocation, consumed by another invocation) should use coherent variables to read -%% and write the shared data. -%% -%% Data written by one shader invocation and consumed by other shader invocations launched -%% as a result of its execution ("dependent invocations") should use coherent variables in -%% the producing shader invocation and call memoryBarrier() after the last write. The consuming -%% shader invocation should also use coherent variables. -%% -%% Data written to image variables in one rendering pass and read by the shader in a later -%% pass need not use coherent variables or memoryBarrier(). Calling MemoryBarrier() with -%% the SHADER_IMAGE_ACCESS_BARRIER_BIT set in `Barriers' between passes is necessary. -%% -%% Data written by the shader in one rendering pass and read by another mechanism (e.g., -%% vertex or index buffer pulling) in a later pass need not use coherent variables or memoryBarrier(). -%% Calling ``gl:memoryBarrier'' with the appropriate bits set in `Barriers' between -%% passes is necessary. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glMemoryBarrier.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glMemoryBarrier.xhtml">external</a> documentation. -spec memoryBarrier(Barriers) -> 'ok' when Barriers :: integer(). memoryBarrier(Barriers) -> cast(5867, <<Barriers:?GLbitfield>>). @@ -16787,27 +8331,7 @@ memoryBarrier(Barriers) -> %% the image may still be modified, however, its storage requirements may not change. Such %% a texture is referred to as an `immutable-format' texture. %% -%% Calling ``gl:texStorage1D'' is equivalent, assuming no errors are generated, to executing -%% the following pseudo-code: for (i = 0; i < levels; i++) { glTexImage1D(target, i, -%% internalformat, width, 0, format, type, NULL); width = max(1, (width / 2)); } -%% -%% Since no texture data is actually provided, the values used in the pseudo-code for `Format' -%% and `Type' are irrelevant and may be considered to be any values that are legal -%% for the chosen `Internalformat' enumerant. `Internalformat' must be one of the -%% sized internal formats given in Table 1 below, one of the sized depth-component formats `?GL_DEPTH_COMPONENT32F' -%% , `?GL_DEPTH_COMPONENT24', or `?GL_DEPTH_COMPONENT16', or one of the combined -%% depth-stencil formats, `?GL_DEPTH32F_STENCIL8', or `?GL_DEPTH24_STENCIL8'. Upon -%% success, the value of `?GL_TEXTURE_IMMUTABLE_FORMAT' becomes `?GL_TRUE'. The -%% value of `?GL_TEXTURE_IMMUTABLE_FORMAT' may be discovered by calling {@link gl:getTexParameterfv/2} -%% with `Pname' set to `?GL_TEXTURE_IMMUTABLE_FORMAT'. No further changes to the -%% dimensions or format of the texture object may be made. Using any command that might alter -%% the dimensions or format of the texture object (such as {@link gl:texImage1D/8} or another -%% call to ``gl:texStorage1D'') will result in the generation of a `?GL_INVALID_OPERATION' -%% error, even if it would not, in fact, alter the dimensions or format of the object. -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexStorage1D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexStorage1D.xhtml">external</a> documentation. -spec texStorage1D(Target, Levels, Internalformat, Width) -> 'ok' when Target :: enum(),Levels :: integer(),Internalformat :: enum(),Width :: integer(). texStorage1D(Target,Levels,Internalformat,Width) -> cast(5868, <<Target:?GLenum,Levels:?GLsizei,Internalformat:?GLenum,Width:?GLsizei>>). @@ -16820,39 +8344,7 @@ texStorage1D(Target,Levels,Internalformat,Width) -> %% proxy texture. The contents of the image may still be modified, however, its storage requirements %% may not change. Such a texture is referred to as an `immutable-format' texture. %% -%% The behavior of ``gl:texStorage2D'' depends on the `Target' parameter. When `Target' -%% is `?GL_TEXTURE_2D', `?GL_PROXY_TEXTURE_2D', `?GL_TEXTURE_RECTANGLE', `?GL_PROXY_TEXTURE_RECTANGLE' -%% or `?GL_PROXY_TEXTURE_CUBE_MAP', calling ``gl:texStorage2D'' is equivalent, assuming -%% no errors are generated, to executing the following pseudo-code: for (i = 0; i < levels; -%% i++) { glTexImage2D(target, i, internalformat, width, height, 0, format, type, NULL); -%% width = max(1, (width / 2)); height = max(1, (height / 2)); } -%% -%% When `Target' is `?GL_TEXTURE_CUBE_MAP', ``gl:texStorage2D'' is equivalent -%% to: for (i = 0; i < levels; i++) { for (face in (+X, -X, +Y, -Y, +Z, -Z)) { glTexImage2D(face, -%% i, internalformat, width, height, 0, format, type, NULL); } width = max(1, (width / 2)); -%% height = max(1, (height / 2)); } -%% -%% When `Target' is `?GL_TEXTURE_1D' or `?GL_TEXTURE_1D_ARRAY', ``gl:texStorage2D'' -%% is equivalent to: for (i = 0; i < levels; i++) { glTexImage2D(target, i, internalformat, -%% width, height, 0, format, type, NULL); width = max(1, (width / 2)); } -%% -%% Since no texture data is actually provided, the values used in the pseudo-code for `Format' -%% and `Type' are irrelevant and may be considered to be any values that are legal -%% for the chosen `Internalformat' enumerant. `Internalformat' must be one of the -%% sized internal formats given in Table 1 below, one of the sized depth-component formats `?GL_DEPTH_COMPONENT32F' -%% , `?GL_DEPTH_COMPONENT24', or `?GL_DEPTH_COMPONENT16', or one of the combined -%% depth-stencil formats, `?GL_DEPTH32F_STENCIL8', or `?GL_DEPTH24_STENCIL8'. Upon -%% success, the value of `?GL_TEXTURE_IMMUTABLE_FORMAT' becomes `?GL_TRUE'. The -%% value of `?GL_TEXTURE_IMMUTABLE_FORMAT' may be discovered by calling {@link gl:getTexParameterfv/2} -%% with `Pname' set to `?GL_TEXTURE_IMMUTABLE_FORMAT'. No further changes to the -%% dimensions or format of the texture object may be made. Using any command that might alter -%% the dimensions or format of the texture object (such as {@link gl:texImage2D/9} or another -%% call to ``gl:texStorage2D'') will result in the generation of a `?GL_INVALID_OPERATION' -%% error, even if it would not, in fact, alter the dimensions or format of the object. -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexStorage2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexStorage2D.xhtml">external</a> documentation. -spec texStorage2D(Target, Levels, Internalformat, Width, Height) -> 'ok' when Target :: enum(),Levels :: integer(),Internalformat :: enum(),Width :: integer(),Height :: integer(). texStorage2D(Target,Levels,Internalformat,Width,Height) -> cast(5869, <<Target:?GLenum,Levels:?GLsizei,Internalformat:?GLenum,Width:?GLsizei,Height:?GLsizei>>). @@ -16866,50 +8358,21 @@ texStorage2D(Target,Levels,Internalformat,Width,Height) -> %% requirements may not change. Such a texture is referred to as an `immutable-format' %% texture. %% -%% The behavior of ``gl:texStorage3D'' depends on the `Target' parameter. When `Target' -%% is `?GL_TEXTURE_3D', or `?GL_PROXY_TEXTURE_3D', calling ``gl:texStorage3D'' -%% is equivalent, assuming no errors are generated, to executing the following pseudo-code: -%% for (i = 0; i < levels; i++) { glTexImage3D(target, i, internalformat, width, height, -%% depth, 0, format, type, NULL); width = max(1, (width / 2)); height = max(1, (height / -%% 2)); depth = max(1, (depth / 2)); } -%% -%% When `Target' is `?GL_TEXTURE_2D_ARRAY', `?GL_PROXY_TEXTURE_2D_ARRAY', `?GL_TEXTURE_CUBE_MAP_ARRAY' -%% , or `?GL_PROXY_TEXTURE_CUBE_MAP_ARRAY', ``gl:texStorage3D'' is equivalent to: -%% for (i = 0; i < levels; i++) { glTexImage3D(target, i, internalformat, width, height, -%% depth, 0, format, type, NULL); width = max(1, (width / 2)); height = max(1, (height / -%% 2)); } -%% -%% Since no texture data is actually provided, the values used in the pseudo-code for `Format' -%% and `Type' are irrelevant and may be considered to be any values that are legal -%% for the chosen `Internalformat' enumerant. `Internalformat' must be one of the -%% sized internal formats given in Table 1 below, one of the sized depth-component formats `?GL_DEPTH_COMPONENT32F' -%% , `?GL_DEPTH_COMPONENT24', or `?GL_DEPTH_COMPONENT16', or one of the combined -%% depth-stencil formats, `?GL_DEPTH32F_STENCIL8', or `?GL_DEPTH24_STENCIL8'. Upon -%% success, the value of `?GL_TEXTURE_IMMUTABLE_FORMAT' becomes `?GL_TRUE'. The -%% value of `?GL_TEXTURE_IMMUTABLE_FORMAT' may be discovered by calling {@link gl:getTexParameterfv/2} -%% with `Pname' set to `?GL_TEXTURE_IMMUTABLE_FORMAT'. No further changes to the -%% dimensions or format of the texture object may be made. Using any command that might alter -%% the dimensions or format of the texture object (such as {@link gl:texImage3D/10} or another -%% call to ``gl:texStorage3D'') will result in the generation of a `?GL_INVALID_OPERATION' -%% error, even if it would not, in fact, alter the dimensions or format of the object. -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glTexStorage3D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexStorage3D.xhtml">external</a> documentation. -spec texStorage3D(Target, Levels, Internalformat, Width, Height, Depth) -> 'ok' when Target :: enum(),Levels :: integer(),Internalformat :: enum(),Width :: integer(),Height :: integer(),Depth :: integer(). texStorage3D(Target,Levels,Internalformat,Width,Height,Depth) -> cast(5870, <<Target:?GLenum,Levels:?GLsizei,Internalformat:?GLenum,Width:?GLsizei,Height:?GLsizei,Depth:?GLsizei>>). %% @doc glDepthBoundsEXT %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glDepthBoundsEXT.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec depthBoundsEXT(Zmin, Zmax) -> 'ok' when Zmin :: clamp(),Zmax :: clamp(). depthBoundsEXT(Zmin,Zmax) -> cast(5871, <<Zmin:?GLclampd,Zmax:?GLclampd>>). %% @doc glStencilClearTagEXT %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glStencilClearTagEXT.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">external</a> documentation. -spec stencilClearTagEXT(StencilTagBits, StencilClearTag) -> 'ok' when StencilTagBits :: integer(),StencilClearTag :: integer(). stencilClearTagEXT(StencilTagBits,StencilClearTag) -> cast(5872, <<StencilTagBits:?GLsizei,StencilClearTag:?GLuint>>). diff --git a/lib/wx/src/gen/glu.erl b/lib/wx/src/gen/glu.erl index f641f41262..5e5f01874f 100644 --- a/lib/wx/src/gen/glu.erl +++ b/lib/wx/src/gen/glu.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2016. All Rights Reserved. +%% Copyright Ericsson AB 2008-2017. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ %% This file is generated DO NOT EDIT %% @doc A part of the standard OpenGL Utility api. -%% See <a href="http://www.opengl.org/sdk/docs/man/">www.opengl.org</a> +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/">www.khronos.org</a> %% %% Booleans are represented by integers 0 and 1. @@ -92,29 +92,7 @@ tesselate({Nx,Ny,Nz}, Vs) -> %% of decreasing resolutions called a mipmap. This is used for the antialiasing of texture %% mapped primitives. %% -%% A return value of zero indicates success, otherwise a GLU error code is returned (see {@link glu:errorString/1} -%% ). -%% -%% A series of mipmap levels from `Base' to `Max' is built by decimating `Data' -%% in half until size 1×1 is reached. At each level, each texel in the halved mipmap -%% level is an average of the corresponding two texels in the larger mipmap level. {@link gl:texImage1D/8} -%% is called to load these mipmap levels from `Base' to `Max' . If `Max' is -%% larger than the highest mipmap level for the texture of the specified size, then a GLU -%% error code is returned (see {@link glu:errorString/1} ) and nothing is loaded. -%% -%% For example, if `Level' is 2 and `Width' is 16, the following levels are possible: -%% 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2 through 6 respectively. -%% If `Base' is 3 and `Max' is 5, then only mipmap levels 8×1, 4×1 and 2×1 -%% are loaded. However, if `Max' is 7, then an error is returned and nothing is loaded -%% since `Max' is larger than the highest mipmap level which is, in this case, 6. -%% -%% The highest mipmap level can be derived from the formula log 2(width×2 level). -%% -%% See the {@link gl:texImage1D/8} reference page for a description of the acceptable values -%% for `Type' parameter. See the {@link gl:drawPixels/5} reference page for a description -%% of the acceptable values for `Level' parameter. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluBuild1DMipmapLevels.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluBuild1DMipmapLevels.xml">external</a> documentation. -spec build1DMipmapLevels(Target, InternalFormat, Width, Format, Type, Level, Base, Max, Data) -> integer() when Target :: enum(),InternalFormat :: integer(),Width :: integer(),Format :: enum(),Type :: enum(),Level :: integer(),Base :: integer(),Max :: integer(),Data :: binary(). build1DMipmapLevels(Target,InternalFormat,Width,Format,Type,Level,Base,Max,Data) -> send_bin(Data), @@ -126,33 +104,7 @@ build1DMipmapLevels(Target,InternalFormat,Width,Format,Type,Level,Base,Max,Data) %% decreasing resolutions called a mipmap. This is used for the antialiasing of texture mapped %% primitives. %% -%% A return value of zero indicates success, otherwise a GLU error code is returned (see {@link glu:errorString/1} -%% ). -%% -%% Initially, the `Width' of `Data' is checked to see if it is a power of 2. If -%% not, a copy of `Data' is scaled up or down to the nearest power of 2. (If `Width' -%% is exactly between powers of 2, then the copy of `Data' will scale upwards.) This -%% copy will be used for subsequent mipmapping operations described below. For example, if `Width' -%% is 57, then a copy of `Data' will scale up to 64 before mipmapping takes place. -%% -%% Then, proxy textures (see {@link gl:texImage1D/8} ) are used to determine if the implementation -%% can fit the requested texture. If not, `Width' is continually halved until it fits. -%% -%% Next, a series of mipmap levels is built by decimating a copy of `Data' in half -%% until size 1×1 is reached. At each level, each texel in the halved mipmap level is an -%% average of the corresponding two texels in the larger mipmap level. -%% -%% {@link gl:texImage1D/8} is called to load each of these mipmap levels. Level 0 is a copy -%% of `Data' . The highest level is (log 2)(width). For example, if `Width' is 64 and the implementation -%% can store a texture of this size, the following mipmap levels are built: 64×1, 32×1, -%% 16×1, 8×1, 4×1, 2×1, and 1×1. These correspond to levels 0 through 6, respectively. -%% -%% -%% See the {@link gl:texImage1D/8} reference page for a description of the acceptable values -%% for the `Type' parameter. See the {@link gl:drawPixels/5} reference page for a description -%% of the acceptable values for the `Data' parameter. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluBuild1DMipmaps.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluBuild1DMipmaps.xml">external</a> documentation. -spec build1DMipmaps(Target, InternalFormat, Width, Format, Type, Data) -> integer() when Target :: enum(),InternalFormat :: integer(),Width :: integer(),Format :: enum(),Type :: enum(),Data :: binary(). build1DMipmaps(Target,InternalFormat,Width,Format,Type,Data) -> send_bin(Data), @@ -164,32 +116,7 @@ build1DMipmaps(Target,InternalFormat,Width,Format,Type,Data) -> %% of decreasing resolutions called a mipmap. This is used for the antialiasing of texture %% mapped primitives. %% -%% A return value of zero indicates success, otherwise a GLU error code is returned (see {@link glu:errorString/1} -%% ). -%% -%% A series of mipmap levels from `Base' to `Max' is built by decimating `Data' -%% in half along both dimensions until size 1×1 is reached. At each level, each texel -%% in the halved mipmap level is an average of the corresponding four texels in the larger -%% mipmap level. (In the case of rectangular images, the decimation will ultimately reach -%% an N×1 or 1×N configuration. Here, two texels are averaged instead.) {@link gl:texImage2D/9} -%% is called to load these mipmap levels from `Base' to `Max' . If `Max' is -%% larger than the highest mipmap level for the texture of the specified size, then a GLU -%% error code is returned (see {@link glu:errorString/1} ) and nothing is loaded. -%% -%% For example, if `Level' is 2 and `Width' is 16 and `Height' is 8, the -%% following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These correspond to -%% levels 2 through 6 respectively. If `Base' is 3 and `Max' is 5, then only mipmap -%% levels 8×4, 4×2, and 2×1 are loaded. However, if `Max' is 7, then an error is -%% returned and nothing is loaded since `Max' is larger than the highest mipmap level -%% which is, in this case, 6. -%% -%% The highest mipmap level can be derived from the formula log 2(max(width height)×2 level). -%% -%% See the {@link gl:texImage1D/8} reference page for a description of the acceptable values -%% for `Format' parameter. See the {@link gl:drawPixels/5} reference page for a description -%% of the acceptable values for `Type' parameter. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluBuild2DMipmapLevels.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluBuild2DMipmapLevels.xml">external</a> documentation. -spec build2DMipmapLevels(Target, InternalFormat, Width, Height, Format, Type, Level, Base, Max, Data) -> integer() when Target :: enum(),InternalFormat :: integer(),Width :: integer(),Height :: integer(),Format :: enum(),Type :: enum(),Level :: integer(),Base :: integer(),Max :: integer(),Data :: binary(). build2DMipmapLevels(Target,InternalFormat,Width,Height,Format,Type,Level,Base,Max,Data) -> send_bin(Data), @@ -201,40 +128,7 @@ build2DMipmapLevels(Target,InternalFormat,Width,Height,Format,Type,Level,Base,Ma %% decreasing resolutions called a mipmap. This is used for the antialiasing of texture-mapped %% primitives. %% -%% A return value of zero indicates success, otherwise a GLU error code is returned (see {@link glu:errorString/1} -%% ). -%% -%% Initially, the `Width' and `Height' of `Data' are checked to see if they -%% are a power of 2. If not, a copy of `Data' (not `Data' ), is scaled up or down -%% to the nearest power of 2. This copy will be used for subsequent mipmapping operations -%% described below. (If `Width' or `Height' is exactly between powers of 2, then -%% the copy of `Data' will scale upwards.) For example, if `Width' is 57 and `Height' -%% is 23, then a copy of `Data' will scale up to 64 in `Width' and down to 16 -%% in depth, before mipmapping takes place. -%% -%% Then, proxy textures (see {@link gl:texImage2D/9} ) are used to determine if the implementation -%% can fit the requested texture. If not, both dimensions are continually halved until it -%% fits. (If the OpenGL version is (<= 1.0, both maximum texture dimensions are clamped -%% to the value returned by {@link gl:getBooleanv/1} with the argument `?GLU_MAX_TEXTURE_SIZE' -%% .) -%% -%% Next, a series of mipmap levels is built by decimating a copy of `Data' in half -%% along both dimensions until size 1×1 is reached. At each level, each texel in the halved -%% mipmap level is an average of the corresponding four texels in the larger mipmap level. -%% (In the case of rectangular images, the decimation will ultimately reach an N×1 or 1×N -%% configuration. Here, two texels are averaged instead.) -%% -%% {@link gl:texImage2D/9} is called to load each of these mipmap levels. Level 0 is a copy -%% of `Data' . The highest level is (log 2)(max(width height)). For example, if `Width' is 64 and `Height' -%% is 16 and the implementation can store a texture of this size, the following mipmap levels -%% are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1, and 1×1 These correspond to -%% levels 0 through 6, respectively. -%% -%% See the {@link gl:texImage1D/8} reference page for a description of the acceptable values -%% for `Format' parameter. See the {@link gl:drawPixels/5} reference page for a description -%% of the acceptable values for `Type' parameter. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluBuild2DMipmaps.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluBuild2DMipmaps.xml">external</a> documentation. -spec build2DMipmaps(Target, InternalFormat, Width, Height, Format, Type, Data) -> integer() when Target :: enum(),InternalFormat :: integer(),Width :: integer(),Height :: integer(),Format :: enum(),Type :: enum(),Data :: binary(). build2DMipmaps(Target,InternalFormat,Width,Height,Format,Type,Data) -> send_bin(Data), @@ -246,32 +140,7 @@ build2DMipmaps(Target,InternalFormat,Width,Height,Format,Type,Data) -> %% maps of decreasing resolutions called a mipmap. This is used for the antialiasing of texture %% mapped primitives. %% -%% A return value of zero indicates success, otherwise a GLU error code is returned (see {@link glu:errorString/1} -%% ). -%% -%% A series of mipmap levels from `Base' to `Max' is built by decimating `Data' -%% in half along both dimensions until size 1×1×1 is reached. At each level, each texel -%% in the halved mipmap level is an average of the corresponding eight texels in the larger -%% mipmap level. (If exactly one of the dimensions is 1, four texels are averaged. If exactly -%% two of the dimensions are 1, two texels are averaged.) {@link gl:texImage3D/10} is called -%% to load these mipmap levels from `Base' to `Max' . If `Max' is larger than -%% the highest mipmap level for the texture of the specified size, then a GLU error code -%% is returned (see {@link glu:errorString/1} ) and nothing is loaded. -%% -%% For example, if `Level' is 2 and `Width' is 16, `Height' is 8 and `Depth' -%% is 4, the following levels are possible: 16×8×4, 8×4×2, 4×2×1, 2×1×1, 1×1×1. -%% These correspond to levels 2 through 6 respectively. If `Base' is 3 and `Max' -%% is 5, then only mipmap levels 8×4×2, 4×2×1, and 2×1×1 are loaded. However, if `Max' -%% is 7, then an error is returned and nothing is loaded, since `Max' is larger than -%% the highest mipmap level which is, in this case, 6. -%% -%% The highest mipmap level can be derived from the formula log 2(max(width height depth)×2 level). -%% -%% See the {@link gl:texImage1D/8} reference page for a description of the acceptable values -%% for `Format' parameter. See the {@link gl:drawPixels/5} reference page for a description -%% of the acceptable values for `Type' parameter. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluBuild3DMipmapLevels.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluBuild3DMipmapLevels.xml">external</a> documentation. -spec build3DMipmapLevels(Target, InternalFormat, Width, Height, Depth, Format, Type, Level, Base, Max, Data) -> integer() when Target :: enum(),InternalFormat :: integer(),Width :: integer(),Height :: integer(),Depth :: integer(),Format :: enum(),Type :: enum(),Level :: integer(),Base :: integer(),Max :: integer(),Data :: binary(). build3DMipmapLevels(Target,InternalFormat,Width,Height,Depth,Format,Type,Level,Base,Max,Data) -> send_bin(Data), @@ -283,39 +152,7 @@ build3DMipmapLevels(Target,InternalFormat,Width,Height,Depth,Format,Type,Level,B %% of decreasing resolutions called a mipmap. This is used for the antialiasing of texture-mapped %% primitives. %% -%% A return value of zero indicates success, otherwise a GLU error code is returned (see {@link glu:errorString/1} -%% ). -%% -%% Initially, the `Width' , `Height' and `Depth' of `Data' are checked -%% to see if they are a power of 2. If not, a copy of `Data' is made and scaled up or -%% down to the nearest power of 2. (If `Width' , `Height' , or `Depth' is exactly -%% between powers of 2, then the copy of `Data' will scale upwards.) This copy will -%% be used for subsequent mipmapping operations described below. For example, if `Width' -%% is 57, `Height' is 23, and `Depth' is 24, then a copy of `Data' will scale -%% up to 64 in width, down to 16 in height, and up to 32 in depth before mipmapping takes -%% place. -%% -%% Then, proxy textures (see {@link gl:texImage3D/10} ) are used to determine if the implementation -%% can fit the requested texture. If not, all three dimensions are continually halved until -%% it fits. -%% -%% Next, a series of mipmap levels is built by decimating a copy of `Data' in half -%% along all three dimensions until size 1×1×1 is reached. At each level, each texel in -%% the halved mipmap level is an average of the corresponding eight texels in the larger -%% mipmap level. (If exactly one of the dimensions is 1, four texels are averaged. If exactly -%% two of the dimensions are 1, two texels are averaged.) -%% -%% {@link gl:texImage3D/10} is called to load each of these mipmap levels. Level 0 is a copy -%% of `Data' . The highest level is (log 2)(max(width height depth)). For example, if `Width' is 64, `Height' -%% is 16, and `Depth' is 32, and the implementation can store a texture of this size, -%% the following mipmap levels are built: 64×16×32, 32×8×16, 16×4×8, 8×2×4, 4×1×2, -%% 2×1×1, and 1×1×1. These correspond to levels 0 through 6, respectively. -%% -%% See the {@link gl:texImage1D/8} reference page for a description of the acceptable values -%% for `Format' parameter. See the {@link gl:drawPixels/5} reference page for a description -%% of the acceptable values for `Type' parameter. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluBuild3DMipmaps.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluBuild3DMipmaps.xml">external</a> documentation. -spec build3DMipmaps(Target, InternalFormat, Width, Height, Depth, Format, Type, Data) -> integer() when Target :: enum(),InternalFormat :: integer(),Width :: integer(),Height :: integer(),Depth :: integer(),Format :: enum(),Type :: enum(),Data :: binary(). build3DMipmaps(Target,InternalFormat,Width,Height,Depth,Format,Type,Data) -> send_bin(Data), @@ -326,12 +163,7 @@ build3DMipmaps(Target,InternalFormat,Width,Height,Depth,Format,Type,Data) -> %% ``glu:checkExtension'' returns `?GLU_TRUE' if `ExtName' is supported otherwise %% `?GLU_FALSE' is returned. %% -%% This is used to check for the presence for OpenGL, GLU, or GLX extension names by passing -%% the extension strings returned by {@link gl:getString/1} , {@link glu:getString/1} , see `glXGetClientString' -%% , see `glXQueryExtensionsString', or see `glXQueryServerString', respectively, -%% as `ExtString' . -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluCheckExtension.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluCheckExtension.xml">external</a> documentation. -spec checkExtension(ExtName, ExtString) -> 0|1 when ExtName :: string(),ExtString :: string(). checkExtension(ExtName,ExtString) -> ExtNameLen = length(ExtName), @@ -345,19 +177,7 @@ checkExtension(ExtName,ExtString) -> %% is subdivided around the `z' axis into slices and along the `z' axis into stacks. %% %% -%% Note that if `Top' is set to 0.0, this routine generates a cone. -%% -%% If the orientation is set to `?GLU_OUTSIDE' (with {@link glu:quadricOrientation/2} ), -%% then any generated normals point away from the `z' axis. Otherwise, they point toward -%% the `z' axis. -%% -%% If texturing is turned on (with {@link glu:quadricTexture/2} ), then texture coordinates -%% are generated so that `t' ranges linearly from 0.0 at `z' = 0 to 1.0 at `z' -%% = `Height' , and `s' ranges from 0.0 at the +`y' axis, to 0.25 at the +`x' -%% axis, to 0.5 at the -`y' axis, to 0.75 at the -`x' axis, and back to 1.0 -%% at the +`y' axis. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluCylinder.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluCylinder.xml">external</a> documentation. -spec cylinder(Quad, Base, Top, Height, Slices, Stacks) -> 'ok' when Quad :: integer(),Base :: float(),Top :: float(),Height :: float(),Slices :: integer(),Stacks :: integer(). cylinder(Quad,Base,Top,Height,Slices,Stacks) -> cast(5017, <<Quad:?GLUquadric,Base:?GLdouble,Top:?GLdouble,Height:?GLdouble,Slices:?GLint,Stacks:?GLint>>). @@ -368,7 +188,7 @@ cylinder(Quad,Base,Top,Height,Slices,Stacks) -> %% and frees any memory it uses. Once ``glu:deleteQuadric'' has been called, `Quad' %% cannot be used again. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluDeleteQuadric.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluDeleteQuadric.xml">external</a> documentation. -spec deleteQuadric(Quad) -> 'ok' when Quad :: integer(). deleteQuadric(Quad) -> cast(5018, <<Quad:?GLUquadric>>). @@ -381,17 +201,7 @@ deleteQuadric(Quad) -> %% slices (like pizza slices) and also about the `z' axis into rings (as specified by `Slices' %% and `Loops' , respectively). %% -%% With respect to orientation, the +`z' side of the disk is considered to be ``outside'' -%% (see {@link glu:quadricOrientation/2} ). This means that if the orientation is set to `?GLU_OUTSIDE' -%% , then any normals generated point along the +`z' axis. Otherwise, they point along -%% the -`z' axis. -%% -%% If texturing has been turned on (with {@link glu:quadricTexture/2} ), texture coordinates -%% are generated linearly such that where r=outer, the value at (`r', 0, 0) is (1, -%% 0.5), at (0, `r', 0) it is (0.5, 1), at (-`r', 0, 0) it is (0, 0.5), and at -%% (0, -`r', 0) it is (0.5, 0). -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluDisk.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluDisk.xml">external</a> documentation. -spec disk(Quad, Inner, Outer, Slices, Loops) -> 'ok' when Quad :: integer(),Inner :: float(),Outer :: float(),Slices :: integer(),Loops :: integer(). disk(Quad,Inner,Outer,Slices,Loops) -> cast(5019, <<Quad:?GLUquadric,Inner:?GLdouble,Outer:?GLdouble,Slices:?GLint,Loops:?GLint>>). @@ -402,12 +212,7 @@ disk(Quad,Inner,Outer,Slices,Loops) -> %% is in ISO Latin 1 format. For example, ``glu:errorString''(`?GLU_OUT_OF_MEMORY') %% returns the string `out of memory'. %% -%% The standard GLU error codes are `?GLU_INVALID_ENUM', `?GLU_INVALID_VALUE', -%% and `?GLU_OUT_OF_MEMORY'. Certain other GLU functions can return specialized error -%% codes through callbacks. See the {@link gl:getError/0} reference page for the list of -%% GL error codes. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluErrorString.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluErrorString.xml">external</a> documentation. -spec errorString(Error) -> string() when Error :: enum(). errorString(Error) -> call(5020, <<Error:?GLenum>>). @@ -417,25 +222,7 @@ errorString(Error) -> %% ``glu:getString'' returns a pointer to a static string describing the GLU version or %% the GLU extensions that are supported. %% -%% The version number is one of the following forms: -%% -%% `major_number.minor_number'`major_number.minor_number.release_number'. -%% -%% The version string is of the following form: -%% -%% `version number<space>vendor-specific information' -%% -%% Vendor-specific information is optional. Its format and contents depend on the implementation. -%% -%% -%% The standard GLU contains a basic set of features and capabilities. If a company or group -%% of companies wish to support other features, these may be included as extensions to the -%% GLU. If `Name' is `?GLU_EXTENSIONS', then ``glu:getString'' returns a space-separated -%% list of names of supported GLU extensions. (Extension names never contain spaces.) -%% -%% All strings are null-terminated. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluGetString.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluGetString.xml">external</a> documentation. -spec getString(Name) -> string() when Name :: enum(). getString(Name) -> call(5021, <<Name:?GLenum>>). @@ -445,31 +232,7 @@ getString(Name) -> %% ``glu:lookAt'' creates a viewing matrix derived from an eye point, a reference point %% indicating the center of the scene, and an `UP' vector. %% -%% The matrix maps the reference point to the negative `z' axis and the eye point to -%% the origin. When a typical projection matrix is used, the center of the scene therefore -%% maps to the center of the viewport. Similarly, the direction described by the `UP' -%% vector projected onto the viewing plane is mapped to the positive `y' axis so that -%% it points upward in the viewport. The `UP' vector must not be parallel to the line -%% of sight from the eye point to the reference point. -%% -%% Let -%% -%% F=(centerX-eyeX centerY-eyeY centerZ-eyeZ) -%% -%% Let `UP' be the vector (upX upY upZ). -%% -%% Then normalize as follows: f=F/(||F||) -%% -%% UP"=UP/(||UP||) -%% -%% Finally, let s=f×UP", and u=s×f. -%% -%% M is then constructed as follows: M=(s[0] s[1] s[2] 0 u[0] u[1] u[2] 0-f[0]-f[1]-f[2] 0 0 0 0 1) -%% -%% and ``glu:lookAt'' is equivalent to glMultMatrixf(M); glTranslated(-eyex, -eyey, -%% -eyez); -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluLookAt.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluLookAt.xml">external</a> documentation. -spec lookAt(EyeX, EyeY, EyeZ, CenterX, CenterY, CenterZ, UpX, UpY, UpZ) -> 'ok' when EyeX :: float(),EyeY :: float(),EyeZ :: float(),CenterX :: float(),CenterY :: float(),CenterZ :: float(),UpX :: float(),UpY :: float(),UpZ :: float(). lookAt(EyeX,EyeY,EyeZ,CenterX,CenterY,CenterZ,UpX,UpY,UpZ) -> cast(5022, <<EyeX:?GLdouble,EyeY:?GLdouble,EyeZ:?GLdouble,CenterX:?GLdouble,CenterY:?GLdouble,CenterZ:?GLdouble,UpX:?GLdouble,UpY:?GLdouble,UpZ:?GLdouble>>). @@ -480,7 +243,7 @@ lookAt(EyeX,EyeY,EyeZ,CenterX,CenterY,CenterZ,UpX,UpY,UpZ) -> %% must be referred to when calling quadrics rendering and control functions. A return value %% of 0 means that there is not enough memory to allocate the object. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluNewQuadric.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluNewQuadric.xml">external</a> documentation. -spec newQuadric() -> integer(). newQuadric() -> call(5023, <<>>). @@ -490,7 +253,7 @@ newQuadric() -> %% ``glu:ortho2D'' sets up a two-dimensional orthographic viewing region. This is equivalent %% to calling {@link gl:ortho/6} with near=-1 and far=1. %% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluOrtho2D.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluOrtho2D.xml">external</a> documentation. -spec ortho2D(Left, Right, Bottom, Top) -> 'ok' when Left :: float(),Right :: float(),Bottom :: float(),Top :: float(). ortho2D(Left,Right,Bottom,Top) -> cast(5024, <<Left:?GLdouble,Right:?GLdouble,Bottom:?GLdouble,Top:?GLdouble>>). @@ -503,23 +266,7 @@ ortho2D(Left,Right,Bottom,Top) -> %% the +`x' axis, 180 degrees along the -`y' axis, and 270 degrees along the -`x' %% axis). %% -%% The partial disk has a radius of `Outer' and contains a concentric circular hole -%% with a radius of `Inner' . If `Inner' is 0, then no hole is generated. The partial -%% disk is subdivided around the `z' axis into slices (like pizza slices) and also about -%% the `z' axis into rings (as specified by `Slices' and `Loops' , respectively). -%% -%% -%% With respect to orientation, the +`z' side of the partial disk is considered to -%% be outside (see {@link glu:quadricOrientation/2} ). This means that if the orientation -%% is set to `?GLU_OUTSIDE', then any normals generated point along the +`z' axis. -%% Otherwise, they point along the -`z' axis. -%% -%% If texturing is turned on (with {@link glu:quadricTexture/2} ), texture coordinates are -%% generated linearly such that where r=outer, the value at (`r', 0, 0) is (1.0, -%% 0.5), at (0, `r', 0) it is (0.5, 1.0), at (-`r', 0, 0) it is (0.0, 0.5), and -%% at (0, -`r', 0) it is (0.5, 0.0). -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluPartialDisk.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluPartialDisk.xml">external</a> documentation. -spec partialDisk(Quad, Inner, Outer, Slices, Loops, Start, Sweep) -> 'ok' when Quad :: integer(),Inner :: float(),Outer :: float(),Slices :: integer(),Loops :: integer(),Start :: float(),Sweep :: float(). partialDisk(Quad,Inner,Outer,Slices,Loops,Start,Sweep) -> cast(5025, <<Quad:?GLUquadric,Inner:?GLdouble,Outer:?GLdouble,Slices:?GLint,Loops:?GLint,Start:?GLdouble,Sweep:?GLdouble>>). @@ -532,18 +279,7 @@ partialDisk(Quad,Inner,Outer,Slices,Loops,Start,Sweep) -> %% as wide in `x' as it is in `y'. If the viewport is twice as wide as it is tall, %% it displays the image without distortion. %% -%% The matrix generated by ``glu:perspective'' is multipled by the current matrix, just -%% as if {@link gl:multMatrixd/1} were called with the generated matrix. To load the perspective -%% matrix onto the current matrix stack instead, precede the call to ``glu:perspective'' -%% with a call to {@link gl:loadIdentity/0} . -%% -%% Given `f' defined as follows: -%% -%% f=cotangent(fovy/2) The generated matrix is -%% -%% (f/aspect 0 0 0 0 f 0 0 0 0(zFar+zNear)/(zNear-zFar)(2×zFar×zNear)/(zNear-zFar) 0 0 -1 0) -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluPerspective.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluPerspective.xml">external</a> documentation. -spec perspective(Fovy, Aspect, ZNear, ZFar) -> 'ok' when Fovy :: float(),Aspect :: float(),ZNear :: float(),ZFar :: float(). perspective(Fovy,Aspect,ZNear,ZFar) -> cast(5026, <<Fovy:?GLdouble,Aspect:?GLdouble,ZNear:?GLdouble,ZFar:?GLdouble>>). @@ -557,19 +293,7 @@ perspective(Fovy,Aspect,ZNear,ZFar) -> %% rerender the scene. All primitives that would have been drawn near the cursor are identified %% and stored in the selection buffer. %% -%% The matrix created by ``glu:pickMatrix'' is multiplied by the current matrix just as -%% if {@link gl:multMatrixd/1} is called with the generated matrix. To effectively use the -%% generated pick matrix for picking, first call {@link gl:loadIdentity/0} to load an identity -%% matrix onto the perspective matrix stack. Then call ``glu:pickMatrix'', and, finally, -%% call a command (such as {@link glu:perspective/4} ) to multiply the perspective matrix by -%% the pick matrix. -%% -%% When using ``glu:pickMatrix'' to pick NURBS, be careful to turn off the NURBS property -%% `?GLU_AUTO_LOAD_MATRIX'. If `?GLU_AUTO_LOAD_MATRIX' is not turned off, then -%% any NURBS surface rendered is subdivided differently with the pick matrix than the way -%% it was subdivided without the pick matrix. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluPickMatrix.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluPickMatrix.xml">external</a> documentation. -spec pickMatrix(X, Y, DelX, DelY, Viewport) -> 'ok' when X :: float(),Y :: float(),DelX :: float(),DelY :: float(),Viewport :: {integer(),integer(),integer(),integer()}. pickMatrix(X,Y,DelX,DelY,{V1,V2,V3,V4}) -> cast(5027, <<X:?GLdouble,Y:?GLdouble,DelX:?GLdouble,DelY:?GLdouble,V1:?GLint,V2:?GLint,V3:?GLint,V4:?GLint>>). @@ -581,25 +305,7 @@ pickMatrix(X,Y,DelX,DelY,{V1,V2,V3,V4}) -> %% , and `WinZ' . A return value of `?GLU_TRUE' indicates success, a return value %% of `?GLU_FALSE' indicates failure. %% -%% To compute the coordinates, let v=(objX objY objZ 1.0) represented as a matrix with 4 rows and 1 column. -%% Then ``glu:project'' computes v" as follows: -%% -%% v"=P×M×v -%% -%% where P is the current projection matrix `Proj' and M is the current modelview -%% matrix `Model' (both represented as 4×4 matrices in column-major order). -%% -%% The window coordinates are then computed as follows: -%% -%% winX=view(0)+view(2)×(v"(0)+1)/2 -%% -%% winY=view(1)+view(3)×(v"(1)+1)/2 -%% -%% winZ=(v"(2)+1)/2 -%% -%% -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluProject.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluProject.xml">external</a> documentation. -spec project(ObjX, ObjY, ObjZ, Model, Proj, View) -> {integer(),WinX :: float(),WinY :: float(),WinZ :: float()} when ObjX :: float(),ObjY :: float(),ObjZ :: float(),Model :: matrix(),Proj :: matrix(),View :: {integer(),integer(),integer(),integer()}. project(ObjX,ObjY,ObjZ,{M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16},{P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16},{V1,V2,V3,V4}) -> call(5028, <<ObjX:?GLdouble,ObjY:?GLdouble,ObjZ:?GLdouble,M1:?GLdouble,M2:?GLdouble,M3:?GLdouble,M4:?GLdouble,M5:?GLdouble,M6:?GLdouble,M7:?GLdouble,M8:?GLdouble,M9:?GLdouble,M10:?GLdouble,M11:?GLdouble,M12:?GLdouble,M13:?GLdouble,M14:?GLdouble,M15:?GLdouble,M16:?GLdouble,P1:?GLdouble,P2:?GLdouble,P3:?GLdouble,P4:?GLdouble,P5:?GLdouble,P6:?GLdouble,P7:?GLdouble,P8:?GLdouble,P9:?GLdouble,P10:?GLdouble,P11:?GLdouble,P12:?GLdouble,P13:?GLdouble,P14:?GLdouble,P15:?GLdouble,P16:?GLdouble,V1:?GLint,V2:?GLint,V3:?GLint,V4:?GLint>>); @@ -611,18 +317,7 @@ project(ObjX,ObjY,ObjZ,{M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12},{P1,P2,P3,P4,P5, %% ``glu:quadricDrawStyle'' specifies the draw style for quadrics rendered with `Quad' . %% The legal values are as follows: %% -%% `?GLU_FILL': Quadrics are rendered with polygon primitives. The polygons are drawn -%% in a counterclockwise fashion with respect to their normals (as defined with {@link glu:quadricOrientation/2} -%% ). -%% -%% `?GLU_LINE': Quadrics are rendered as a set of lines. -%% -%% `?GLU_SILHOUETTE': Quadrics are rendered as a set of lines, except that edges separating -%% coplanar faces will not be drawn. -%% -%% `?GLU_POINT': Quadrics are rendered as a set of points. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluQuadricDrawStyle.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluQuadricDrawStyle.xml">external</a> documentation. -spec quadricDrawStyle(Quad, Draw) -> 'ok' when Quad :: integer(),Draw :: enum(). quadricDrawStyle(Quad,Draw) -> cast(5029, <<Quad:?GLUquadric,Draw:?GLenum>>). @@ -632,14 +327,7 @@ quadricDrawStyle(Quad,Draw) -> %% ``glu:quadricNormals'' specifies what kind of normals are desired for quadrics rendered %% with `Quad' . The legal values are as follows: %% -%% `?GLU_NONE': No normals are generated. -%% -%% `?GLU_FLAT': One normal is generated for every facet of a quadric. -%% -%% `?GLU_SMOOTH': One normal is generated for every vertex of a quadric. This is the -%% initial value. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluQuadricNormals.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluQuadricNormals.xml">external</a> documentation. -spec quadricNormals(Quad, Normal) -> 'ok' when Quad :: integer(),Normal :: enum(). quadricNormals(Quad,Normal) -> cast(5030, <<Quad:?GLUquadric,Normal:?GLenum>>). @@ -649,15 +337,7 @@ quadricNormals(Quad,Normal) -> %% ``glu:quadricOrientation'' specifies what kind of orientation is desired for quadrics %% rendered with `Quad' . The `Orientation' values are as follows: %% -%% `?GLU_OUTSIDE': Quadrics are drawn with normals pointing outward (the initial value). -%% -%% -%% `?GLU_INSIDE': Quadrics are drawn with normals pointing inward. -%% -%% Note that the interpretation of `outward' and `inward' depends on the quadric -%% being drawn. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluQuadricOrientation.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluQuadricOrientation.xml">external</a> documentation. -spec quadricOrientation(Quad, Orientation) -> 'ok' when Quad :: integer(),Orientation :: enum(). quadricOrientation(Quad,Orientation) -> cast(5031, <<Quad:?GLUquadric,Orientation:?GLenum>>). @@ -669,10 +349,7 @@ quadricOrientation(Quad,Orientation) -> %% coordinates are generated, and if `Texture' is `?GLU_FALSE', they are not. %% The initial value is `?GLU_FALSE'. %% -%% The manner in which texture coordinates are generated depends upon the specific quadric -%% rendered. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluQuadricTexture.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluQuadricTexture.xml">external</a> documentation. -spec quadricTexture(Quad, Texture) -> 'ok' when Quad :: integer(),Texture :: 0|1. quadricTexture(Quad,Texture) -> cast(5032, <<Quad:?GLUquadric,Texture:?GLboolean>>). @@ -682,17 +359,7 @@ quadricTexture(Quad,Texture) -> %% ``glu:scaleImage'' scales a pixel image using the appropriate pixel store modes to %% unpack data from the source image and pack data into the destination image. %% -%% When shrinking an image, ``glu:scaleImage'' uses a box filter to sample the source -%% image and create pixels for the destination image. When magnifying an image, the pixels -%% from the source image are linearly interpolated to create the destination image. -%% -%% A return value of zero indicates success, otherwise a GLU error code is returned (see {@link glu:errorString/1} -%% ). -%% -%% See the {@link gl:readPixels/7} reference page for a description of the acceptable values -%% for the `Format' , `TypeIn' , and `TypeOut' parameters. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluScaleImage.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluScaleImage.xml">external</a> documentation. -spec scaleImage(Format, WIn, HIn, TypeIn, DataIn, WOut, HOut, TypeOut, DataOut) -> integer() when Format :: enum(),WIn :: integer(),HIn :: integer(),TypeIn :: enum(),DataIn :: binary(),WOut :: integer(),HOut :: integer(),TypeOut :: enum(),DataOut :: mem(). scaleImage(Format,WIn,HIn,TypeIn,DataIn,WOut,HOut,TypeOut,DataOut) -> send_bin(DataIn), @@ -705,17 +372,7 @@ scaleImage(Format,WIn,HIn,TypeIn,DataIn,WOut,HOut,TypeOut,DataOut) -> %% is subdivided around the `z' axis into slices and along the `z' axis into %% stacks (similar to lines of longitude and latitude). %% -%% If the orientation is set to `?GLU_OUTSIDE' (with {@link glu:quadricOrientation/2} ), -%% then any normals generated point away from the center of the sphere. Otherwise, they -%% point toward the center of the sphere. -%% -%% If texturing is turned on (with {@link glu:quadricTexture/2} ), then texture coordinates -%% are generated so that `t' ranges from 0.0 at z=-radius to 1.0 at z=radius (`t' -%% increases linearly along longitudinal lines), and `s' ranges from 0.0 at the +`y' -%% axis, to 0.25 at the +`x' axis, to 0.5 at the -`y' axis, to 0.75 at the -`x' -%% axis, and back to 1.0 at the +`y' axis. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluSphere.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluSphere.xml">external</a> documentation. -spec sphere(Quad, Radius, Slices, Stacks) -> 'ok' when Quad :: integer(),Radius :: float(),Slices :: integer(),Stacks :: integer(). sphere(Quad,Radius,Slices,Stacks) -> cast(5034, <<Quad:?GLUquadric,Radius:?GLdouble,Slices:?GLint,Stacks:?GLint>>). @@ -727,13 +384,7 @@ sphere(Quad,Radius,Slices,Stacks) -> %% . A return value of `?GLU_TRUE' indicates success; a return value of `?GLU_FALSE' %% indicates failure. %% -%% To compute the coordinates (objX objY objZ), ``glu:unProject'' multiplies the normalized device coordinates -%% by the inverse of `Model' * `Proj' as follows: -%% -%% (objX objY objZ W)=INV(P M) ((2(winX-view[0]))/(view[2])-1(2(winY-view[1]))/(view[3])-1 2(winZ)-1 1) INV denotes matrix inversion. W is an unused variable, included for consistent -%% matrix notation. -%% -%% See <a href="http://www.opengl.org/sdk/docs/man/xhtml/gluUnProject.xml">external</a> documentation. +%% See <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluUnProject.xml">external</a> documentation. -spec unProject(WinX, WinY, WinZ, Model, Proj, View) -> {integer(),ObjX :: float(),ObjY :: float(),ObjZ :: float()} when WinX :: float(),WinY :: float(),WinZ :: float(),Model :: matrix(),Proj :: matrix(),View :: {integer(),integer(),integer(),integer()}. unProject(WinX,WinY,WinZ,{M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16},{P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16},{V1,V2,V3,V4}) -> call(5035, <<WinX:?GLdouble,WinY:?GLdouble,WinZ:?GLdouble,M1:?GLdouble,M2:?GLdouble,M3:?GLdouble,M4:?GLdouble,M5:?GLdouble,M6:?GLdouble,M7:?GLdouble,M8:?GLdouble,M9:?GLdouble,M10:?GLdouble,M11:?GLdouble,M12:?GLdouble,M13:?GLdouble,M14:?GLdouble,M15:?GLdouble,M16:?GLdouble,P1:?GLdouble,P2:?GLdouble,P3:?GLdouble,P4:?GLdouble,P5:?GLdouble,P6:?GLdouble,P7:?GLdouble,P8:?GLdouble,P9:?GLdouble,P10:?GLdouble,P11:?GLdouble,P12:?GLdouble,P13:?GLdouble,P14:?GLdouble,P15:?GLdouble,P16:?GLdouble,V1:?GLint,V2:?GLint,V3:?GLint,V4:?GLint>>); diff --git a/lib/wx/test/wx_app_SUITE.erl b/lib/wx/test/wx_app_SUITE.erl index 3fd5bf689d..a5202d8448 100644 --- a/lib/wx/test/wx_app_SUITE.erl +++ b/lib/wx/test/wx_app_SUITE.erl @@ -24,7 +24,12 @@ %%---------------------------------------------------------------------- -module(wx_app_SUITE). --compile(export_all). +-export([all/0, suite/0,groups/0,init_per_group/2,end_per_group/2, + init_per_suite/1, end_per_suite/1, + init_per_testcase/2, end_per_testcase/2]). + +-export([t/0, t/1, fields/1, modules/1, exportall/1, app_depend/1, + undef_funcs/0, undef_funcs/1, appup/1]). -include("wx_test_lib.hrl"). -include_lib("common_test/include/ct.hrl"). diff --git a/lib/wx/test/wx_basic_SUITE.erl b/lib/wx/test/wx_basic_SUITE.erl index d53bd3c15a..ad03a378de 100644 --- a/lib/wx/test/wx_basic_SUITE.erl +++ b/lib/wx/test/wx_basic_SUITE.erl @@ -28,7 +28,11 @@ init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). --compile(export_all). +-export([silent_start/1, create_window/1, several_apps/1, wx_api/1, wx_misc/1, + data_types/1, wx_object/1, undef_in_handle_info/1, undef_in_terminate/1, + undef_handle_event/1, undef_handle_call/1, undef_handle_cast/1, undef_handle_info/1, + undef_code_change/1, undef_terminate1/1, undef_terminate2/1 + ]). -include("wx_test_lib.hrl"). diff --git a/lib/wx/test/wx_class_SUITE.erl b/lib/wx/test/wx_class_SUITE.erl index 0a3c4659bf..6d314ab8fc 100644 --- a/lib/wx/test/wx_class_SUITE.erl +++ b/lib/wx/test/wx_class_SUITE.erl @@ -29,7 +29,10 @@ init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). --compile(export_all). +-export([calendarCtrl/1, treeCtrl/1, notebook/1, staticBoxSizer/1, + clipboard/1, helpFrame/1, htmlWindow/1, listCtrlSort/1, listCtrlVirtual/1, + radioBox/1, systemSettings/1, taskBarIcon/1, toolbar/1, popup/1, modal/1, + textCtrl/1, locale/1]). -include("wx_test_lib.hrl"). @@ -51,7 +54,8 @@ suite() -> [{ct_hooks,[ts_install_cth]}, {timetrap,{minutes,2}}]. all() -> [calendarCtrl, treeCtrl, notebook, staticBoxSizer, clipboard, helpFrame, htmlWindow, listCtrlSort, listCtrlVirtual, - radioBox, systemSettings, taskBarIcon, toolbar, popup, modal]. + radioBox, systemSettings, taskBarIcon, toolbar, popup, modal, + textCtrl, locale]. groups() -> []. diff --git a/lib/wx/test/wx_event_SUITE.erl b/lib/wx/test/wx_event_SUITE.erl index 6512cedaf2..a564f89e58 100644 --- a/lib/wx/test/wx_event_SUITE.erl +++ b/lib/wx/test/wx_event_SUITE.erl @@ -27,7 +27,10 @@ init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). --compile(export_all). +-export([connect/1, disconnect/1, disconnect_cb/1, connect_msg_20/1, connect_cb_20/1, + mouse_on_grid/1, spin_event/1, connect_in_callback/1, recursive/1, + dialog/1, char_events/1, callback_clean/1, handler_clean/1 + ]). -include("wx_test_lib.hrl"). @@ -49,7 +52,7 @@ suite() -> [{ct_hooks,[ts_install_cth]}, {timetrap,{minutes,2}}]. all() -> [connect, disconnect, disconnect_cb, connect_msg_20, connect_cb_20, mouse_on_grid, spin_event, connect_in_callback, recursive, - dialog, char_events, callback_clean + dialog, char_events, callback_clean, handler_clean ]. groups() -> @@ -577,6 +580,7 @@ handler_clean(_Config) -> Frame1 = wx_obj_test:start([{init, Init}]), ?mt(wxFrame, Frame1), wxWindow:show(Frame1), + timer:sleep(500), ?m([_|_], lists:sort(wx_test_lib:flush())), ?m(ok, wx_obj_test:stop(Frame1)), ?m([{terminate,normal}], lists:sort(wx_test_lib:flush())), @@ -584,6 +588,7 @@ handler_clean(_Config) -> Terminate = fun({Frame,_}) -> wxWindow:destroy(Frame) end, Frame2 = wx_obj_test:start([{init, Init}, {terminate, Terminate}]), wxWindow:show(Frame2), + timer:sleep(500), ?m([_|_], lists:sort(wx_test_lib:flush())), ?m(ok, wx_obj_test:stop(Frame2)), ?m([{terminate,normal}], lists:sort(wx_test_lib:flush())), diff --git a/lib/wx/test/wx_oc_object.erl b/lib/wx/test/wx_oc_object.erl index 3924202410..bc9b7d48d0 100644 --- a/lib/wx/test/wx_oc_object.erl +++ b/lib/wx/test/wx_oc_object.erl @@ -20,9 +20,9 @@ -module(wx_oc_object). -include_lib("wx/include/wx.hrl"). --behaviour(wx_object). +%%-behaviour(wx_object). %% commented out avoid warnings -%% gen_server callbacks +%% wx_object callbacks -export([init/1]). -record(state, {}). diff --git a/lib/wx/test/wx_opengl_SUITE.erl b/lib/wx/test/wx_opengl_SUITE.erl index 3de9209fae..19ea731dfb 100644 --- a/lib/wx/test/wx_opengl_SUITE.erl +++ b/lib/wx/test/wx_opengl_SUITE.erl @@ -27,7 +27,7 @@ init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). --compile(export_all). +-export([canvas/1, glu_tesselation/1]). -include("wx_test_lib.hrl"). -include_lib("wx/include/gl.hrl"). diff --git a/lib/wx/test/wx_test_lib.erl b/lib/wx/test/wx_test_lib.erl index 9f26b8cb9d..af508ff490 100644 --- a/lib/wx/test/wx_test_lib.erl +++ b/lib/wx/test/wx_test_lib.erl @@ -24,7 +24,10 @@ %%% Created : 30 Oct 2008 by Dan Gudmundsson <[email protected]> %%%------------------------------------------------------------------- -module(wx_test_lib). --compile(export_all). +-export([init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). +-export([tc_info/1, log/2, log/4, verbose/4, error/4, + flush/0, pick_msg/0, user_available/1, wx_destroy/2, wx_close/2, wait_for_close/0, + run_test/2, run_test/3, test_case_evaluator/3]). -include("wx_test_lib.hrl"). @@ -182,11 +185,15 @@ run_test([], _Config) -> []. run_test(Module, all, Config) -> All = [{Module, Test} || Test <- Module:all()], run_test(All, Config); +run_test(Module, {group, Group}, Config) -> + {_, _, TCs} = lists:keyfind(Group, 1, Module:groups()), + All = [{Module, Test} || Test <- TCs], + run_test(All, Config); + run_test(Module, TestCase, Config) -> log("Eval test case: ~w~n", [{Module, TestCase}]), Sec = timer:seconds(1) * 1000, - {T, Res} = - timer:tc(?MODULE, eval_test_case, [Module, TestCase, Config]), + {T, Res} = timer:tc(fun() -> eval_test_case(Module, TestCase, Config) end), log("Tested ~w in ~w sec~n", [TestCase, T div Sec]), {T div Sec, Res}. diff --git a/lib/wx/test/wx_xtra_SUITE.erl b/lib/wx/test/wx_xtra_SUITE.erl index c6268a7f46..486843ec63 100644 --- a/lib/wx/test/wx_xtra_SUITE.erl +++ b/lib/wx/test/wx_xtra_SUITE.erl @@ -28,7 +28,8 @@ init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). --compile(export_all). +-export([destroy_app/1, multiple_add_in_sizer/1, app_dies/1, + menu_item_debug/1]). -include("wx_test_lib.hrl"). diff --git a/lib/wx/test/wxt.erl b/lib/wx/test/wxt.erl index 265cd5c981..2b380606d5 100644 --- a/lib/wx/test/wxt.erl +++ b/lib/wx/test/wxt.erl @@ -20,7 +20,7 @@ %% Description : Shortcuts for running tests with wx internal test_server %%------------------------------------------------------------------- -module(wxt). --compile(export_all). +-export([t/0, t/1, t/2, user/0, user/1,user/2]). %% Modules or suites can be shortcuts i.e. basic expands to wx_basic_SUITE. %% @@ -83,36 +83,6 @@ alias(Suite) when is_atom(Suite) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -config_fname() -> - "wx_test_case_config". - -%% Read default config file -read_config() -> - Fname = config_fname(), - wx_test_lib:log("Consulting file ~s...~n", [Fname]), - case file:consult(Fname) of - {ok, Config} -> - wx_test_lib:log("Read config ~w~n", [Config]), - Config; - _Error -> - Config = wx_test_lib:default_config(), - wx_test_lib:log("<>WARNING<> Using default config: ~w~n", [Config]), - Config - end. - -%% Write new default config file -write_config(Config) when is_list(Config) -> - Fname = config_fname(), - {ok, Fd} = file:open(Fname, write), - write_list(Fd, Config), - file:close(Fd). - -write_list(Fd, [H | T]) -> - ok = io:format(Fd, "~p.~n",[H]), - write_list(Fd, T); -write_list(_, []) -> - ok. - test_case_fname() -> "wx_test_case_info". diff --git a/system/doc/reference_manual/typespec.xml b/system/doc/reference_manual/typespec.xml index a0ea41cb3b..f6a19397c3 100644 --- a/system/doc/reference_manual/typespec.xml +++ b/system/doc/reference_manual/typespec.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2003</year><year>2016</year> + <year>2003</year><year>2017</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -133,17 +133,17 @@ Map :: map() %% denotes a map of any size | #{} %% denotes the empty map - | #{PairList} + | #{AssociationList} Tuple :: tuple() %% denotes a tuple of any size | {} | {TList} - PairList :: Pair - | Pair, PairList + AssociationList :: Association + | Association, AssociationList - Pair :: Type := Type %% denotes a mandatory pair - | Type => Type %% denotes an optional pair + Association :: Type := Type %% denotes a mandatory association + | Type => Type %% denotes an optional association TList :: Type | Type, TList @@ -173,14 +173,17 @@ The notation <c>[]</c> specifies the singleton type for the empty list. </p> <p> - The general form of maps is <c>#{PairList}</c>. The key types in - <c>PairList</c> are allowed to overlap, and if they do, the - leftmost pair takes precedence. A map pair has a key in - <c>PairList</c> if it belongs to this type. A <c>PairList</c> may contain - both 'mandatory' and 'optional' pairs where 'mandatory' denotes that - a key type, and its associated value type, must be present. - In the case of an 'optional' pair it is not required for the key type to - be present. + The general form of map types is <c>#{AssociationList}</c>. + The key types in + <c>AssociationList</c> are allowed to overlap, and if they do, the + leftmost association takes precedence. A map association has a key in + <c>AssociationList</c> if it belongs to this type. + <c>AssociationList</c> can contain both mandatory and optional + association types. + If an association type is mandatory, an association with that type + is to be present. + In the case of an optional association type it is not required for + the key type to be present. </p> <p> Notice that the syntactic representation of <c>map()</c> is @@ -512,8 +515,8 @@ <p> Currently, the <c>::</c> constraint (read as «is a subtype of») is - the only guard constraint that can be used in the <c>'when'</c> - part of a <c>'-spec'</c> attribute. + the only guard constraint that can be used in the <c>when</c> + part of a <c>-spec</c> attribute. </p> <note> <p> |