15
15
*/
16
16
public final class ImDrawData extends ImGuiStruct {
17
17
public static final int SIZEOF_IM_DRAW_IDX = 2 ;
18
- public static final int SIZEOF_IM_DRAW_VERT = ( 4 + 1 ) * 4 ;
18
+ public static final int SIZEOF_IM_DRAW_VERT = 20 ;
19
19
20
- private static final int FACTOR = 5_000 ;
20
+ private static final int RESIZE_FACTOR = 5_000 ;
21
21
22
- private ByteBuffer idxBuffer = ByteBuffer .allocateDirect (SIZEOF_IM_DRAW_IDX * FACTOR ).order (ByteOrder .nativeOrder ());
23
- private ByteBuffer vtxBuffer = ByteBuffer .allocateDirect (SIZEOF_IM_DRAW_VERT * FACTOR ).order (ByteOrder .nativeOrder ());
22
+ private static ByteBuffer dataBuffer = ByteBuffer .allocateDirect (25_000 ).order (ByteOrder .nativeOrder ());
24
23
25
24
public ImDrawData (final long ptr ) {
26
25
super (ptr );
@@ -91,16 +90,17 @@ public ImDrawData(final long ptr) {
91
90
92
91
public ByteBuffer getCmdListIdxBufferData (final int cmdListIdx ) {
93
92
final int idxBufferCapacity = getCmdListIdxBufferSize (cmdListIdx ) * SIZEOF_IM_DRAW_IDX ;
94
- if (idxBuffer .capacity () < idxBufferCapacity ) {
95
- idxBuffer = ByteBuffer .allocateDirect (idxBufferCapacity + FACTOR ).order (ByteOrder .nativeOrder ());
93
+ if (dataBuffer .capacity () < idxBufferCapacity ) {
94
+ dataBuffer .clear ();
95
+ dataBuffer = ByteBuffer .allocateDirect (idxBufferCapacity + RESIZE_FACTOR ).order (ByteOrder .nativeOrder ());
96
96
}
97
97
98
- nGetCmdListIdxBufferData (cmdListIdx , idxBuffer , idxBufferCapacity );
98
+ nGetCmdListIdxBufferData (cmdListIdx , dataBuffer , idxBufferCapacity );
99
99
100
- idxBuffer .position (0 );
101
- idxBuffer .limit (idxBufferCapacity );
100
+ dataBuffer .position (0 );
101
+ dataBuffer .limit (idxBufferCapacity );
102
102
103
- return idxBuffer ;
103
+ return dataBuffer ;
104
104
}
105
105
106
106
private native void nGetCmdListIdxBufferData (int cmdListIdx , ByteBuffer idxBuffer , int idxBufferCapacity ); /*
@@ -116,16 +116,17 @@ public ByteBuffer getCmdListIdxBufferData(final int cmdListIdx) {
116
116
117
117
public ByteBuffer getCmdListVtxBufferData (final int cmdListIdx ) {
118
118
final int vtxBufferCapacity = getCmdListVtxBufferSize (cmdListIdx ) * SIZEOF_IM_DRAW_VERT ;
119
- if (vtxBuffer .capacity () < vtxBufferCapacity ) {
120
- vtxBuffer = ByteBuffer .allocateDirect (vtxBufferCapacity + FACTOR ).order (ByteOrder .nativeOrder ());
119
+ if (dataBuffer .capacity () < vtxBufferCapacity ) {
120
+ dataBuffer .clear ();
121
+ dataBuffer = ByteBuffer .allocateDirect (vtxBufferCapacity + RESIZE_FACTOR ).order (ByteOrder .nativeOrder ());
121
122
}
122
123
123
- nGetCmdListVtxBufferData (cmdListIdx , vtxBuffer , vtxBufferCapacity );
124
+ nGetCmdListVtxBufferData (cmdListIdx , dataBuffer , vtxBufferCapacity );
124
125
125
- vtxBuffer .position (0 );
126
- vtxBuffer .limit (vtxBufferCapacity );
126
+ dataBuffer .position (0 );
127
+ dataBuffer .limit (vtxBufferCapacity );
127
128
128
- return vtxBuffer ;
129
+ return dataBuffer ;
129
130
}
130
131
131
132
private native void nGetCmdListVtxBufferData (int cmdListIdx , ByteBuffer vtxBuffer , int vtxBufferCapacity ); /*
0 commit comments